1614010102曹妍数据结构实验报告1.docx

上传人:b****5 文档编号:8343779 上传时间:2023-01-30 格式:DOCX 页数:11 大小:68.55KB
下载 相关 举报
1614010102曹妍数据结构实验报告1.docx_第1页
第1页 / 共11页
1614010102曹妍数据结构实验报告1.docx_第2页
第2页 / 共11页
1614010102曹妍数据结构实验报告1.docx_第3页
第3页 / 共11页
1614010102曹妍数据结构实验报告1.docx_第4页
第4页 / 共11页
1614010102曹妍数据结构实验报告1.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

1614010102曹妍数据结构实验报告1.docx

《1614010102曹妍数据结构实验报告1.docx》由会员分享,可在线阅读,更多相关《1614010102曹妍数据结构实验报告1.docx(11页珍藏版)》请在冰豆网上搜索。

1614010102曹妍数据结构实验报告1.docx

1614010102曹妍数据结构实验报告1

哈尔滨理工大学

软件与微电子学院

实验报告

(2017-2018第一学期)

 

课程名称:

班级:

学号:

姓名:

 

实验名称

数据结构实验一

专业

软件工程

姓名

曹妍

学号

1614010102

班级

软件16-1班

一、实验目的:

1.熟悉链表结构;

2.掌握链表结构上的各种操作;

3.学会运用链表结构求解问题。

二、实验内容:

建立一个单链表,在此链表上实现以下几种操作:

1.求此单链表的长度;

2.在此单链表的第i个元素结点之前插入一个结点;

3.删除此单链表的第i个元素结点。

三、实验设备及软件环境:

软件需求:

CodeBlocks

硬件需求:

微型计算机

四、实验过程及结果:

#include

#include

/*定义ElemType为int类型*/

typedefintElemType;

#defineTRUE1

#defineFALSE0

#defineNULL0

#defineflag-1

/*单链表的结点类型*/

typedefstructLNode

{

ElemTypedata;

structLNode*next;

}

LNode,*LinkedList;

/*初始化单链表*/

LinkedListLinkedListInit()

{

LinkedListL;

L=(LinkedList)malloc(sizeof(LNode));

L->next=NULL;

returnL;

}

/*清空单链表*/

voidLinkedListClear(LinkedListL)

{

L->next=NULL;

printf("链表已经清空\n");

}

/*检查单链表是否为空*/

intLinkedListEmpty(LinkedListL)

{

if(L->next==NULL)returnTRUE;

elsereturnFALSE;

}

/*遍历单链表*/

voidLinkedListTraverse(LinkedListL)

{

LinkedListp;

p=L->next;

if(p==NULL)printf("单链表为空表\n");

else

{

printf("链表中的元素为:

\n");

while(p!

=NULL)

{

printf("%d",p->data);

p=p->next;

}

}

printf("\n");

}

intLinkedListLength(LinkedListL)

{

LinkedListp;

intj;

p=L->next;

j=0;

while(p!

=NULL)

{

j++;

p=p->next;

}

returnj;

}

LinkedListLinkedListGet(LinkedListL,inti)

{

LinkedListp;

intj;

p=L->next;

j=1;

while(p!

=NULL&&j

{

p=p->next;

j++;

}

if(j==i)returnp;

elsereturnNULL;

}

intLinkedListLocate(LinkedListL,ElemTypex)

{

LinkedListp;

intj;

p=L->next;

j=1;

while(p!

=NULL&&p->data!

=x)

{

p=p->next;

j++;

}

if(p)returnj;

elsereturn0;

}

voidLinkedListInsert(LinkedListL,inti,ElemTypex)

{

LinkedListp,s;

intj;

j=1;

p=L;

while(p&&j

{

p=p->next;

j++;

}

if(p==NULL||j>i)

printf("插入位置不正确\n");

else

{

s=(LNode*)malloc(sizeof(LNode));

s->data=x;

s->next=p->next;

p->next=s;

printf("%d已插入到链表中\n",x);

}

}

voidLinkedListDel(LinkedListL,inti)

{

LinkedListp,q;

intj;

j=1;

p=L;

while(p->next&&j

{

p=p->next;

j++;

}

if(p->next==NULL)

printf("删除位置不正确\n");

else

{

q=p->next;

p->next=q->next;

free(q);

printf("第%d个元素已从链表中删除\n",i);

}

}

LinkedListLinkedListCreat()

{

LinkedListL=LinkedListInit(),p,r;

ElemTypex;

r=L;

printf("请依次输入链表中的元素,输入-1结束\n");

scanf("%d",&x);

while(x!

=flag)

{

p=(LinkedList)malloc(sizeof(LNode));

p->data=x;

r->next=p;

r=p;

scanf("%d",&x);

}

r->next=NULL;

returnL;

}

intscan()

{

intd;

printf("请选择要进行的操作\n");

printf("1.初始化2.清空3.求链表长度4.检查链表是否为空\n");

printf("5.遍历链表6.从链表中查找元素\n");

printf("7.从链表中查找与给定元素值相同的元素在顺序表中的位置\n");

printf("8.向链表中插入元素9.从链表中删除元素\n");

printf("其他键退出。

\n");

scanf("%d",&d);

return(d);

}

main()

{

intquit=0;

inti,locate;

ElemTypee;

LinkedListL,p;

while(!

quit)

switch(scan())

{

case1:

L=LinkedListInit();

printf("\n");

break;

case2:

LinkedListClear(L);

printf("\n");

break;

case3:

printf("链表的长度为%d\n",LinkedListLength(L));

break;

case4:

if(LinkedListEmpty(L))printf("链表为空\n");

elseprintf("链表非空\n");

break;

case5:

LinkedListTraverse(L);

break;

case6:

printf("请输入待查询元素在链表中的位置:

");

scanf("%d",&i);

p=LinkedListGet(L,i);

if(p)printf("链表中第%d个元素的值为:

%d\n",i,p->data);

elseprintf("查询位置不正确\n");

break;

case7:

printf("请输入待查询元素的值:

");

scanf("%d",&e);

locate=LinkedListLocate(L,e);

if(locate)

printf("%d在链表中的位置是:

%d\n",e,locate);

elseprintf("链表中没有值为%d的元素\n",e);

break;

case8:

printf("请输入插入元素的位置和值(中间以空格或回车分割):

\n");

scanf("%d%d",&i,&e);

LinkedListInsert(L,i,e);

break;

case9:

if(LinkedListLength(L)==0)

printf("链表已经为空,不能删除\n");

else

{

printf("请输入待删除元素的位置:

\n");

scanf("%d",&i);

LinkedListDel(L,i);

}

break;

case10:

L=LinkedListCreat();

printf("\n");

break;

default:

quit=1;

}

}

 

 

五、总结:

这是一门纯属于设计的科目,它需用把理论变为上机调试。

在学习科目的第一节课起,李老师就为我们阐述了它的重要性。

它对我们来说具有一定的难度。

它是其它编程语言的一门基本学科。

刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。

老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。

TC里检查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。

此次的程序设计能够成功,是我和我的同学三个人共同努力作用的结果。

在这一段努力学习的过程中,我们的编程设计有了明显的提高。

其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。

现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。

只要努力去学习,就会灵活的去应用它。

 

实验成绩:

指导教师:

年月日

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1