单链表实验报告Word文件下载.docx

上传人:b****2 文档编号:5909284 上传时间:2023-05-05 格式:DOCX 页数:16 大小:61.49KB
下载 相关 举报
单链表实验报告Word文件下载.docx_第1页
第1页 / 共16页
单链表实验报告Word文件下载.docx_第2页
第2页 / 共16页
单链表实验报告Word文件下载.docx_第3页
第3页 / 共16页
单链表实验报告Word文件下载.docx_第4页
第4页 / 共16页
单链表实验报告Word文件下载.docx_第5页
第5页 / 共16页
单链表实验报告Word文件下载.docx_第6页
第6页 / 共16页
单链表实验报告Word文件下载.docx_第7页
第7页 / 共16页
单链表实验报告Word文件下载.docx_第8页
第8页 / 共16页
单链表实验报告Word文件下载.docx_第9页
第9页 / 共16页
单链表实验报告Word文件下载.docx_第10页
第10页 / 共16页
单链表实验报告Word文件下载.docx_第11页
第11页 / 共16页
单链表实验报告Word文件下载.docx_第12页
第12页 / 共16页
单链表实验报告Word文件下载.docx_第13页
第13页 / 共16页
单链表实验报告Word文件下载.docx_第14页
第14页 / 共16页
单链表实验报告Word文件下载.docx_第15页
第15页 / 共16页
单链表实验报告Word文件下载.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单链表实验报告Word文件下载.docx

《单链表实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《单链表实验报告Word文件下载.docx(16页珍藏版)》请在冰点文库上搜索。

单链表实验报告Word文件下载.docx

/*建立表头结点*/

h->

data=tag;

r=h;

inputthedata:

x);

while(x!

=tag)/*建立循环逐个输入数据*/

{

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

s->

data=x;

r->

link=s;

r=s;

}

link=NULL;

returnh;

}

 

(2)输出单链表中所有结点的数据域值;

首先获得表头结点位置,然后建立循环逐个输出数据,直到位置为空。

数据输出的函数为:

voidoutput(LNode*h)

LNode*r;

inti;

for(i=1;

r->

link!

=NULL;

i++)

{

%d.%d\n"

i,r->

link->

data);

r=r->

link;

}

(3)输入x,y在第一个数据域值为x的结点之后插入结点y,若无结点x,则在表尾插入结点y;

建立两个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,建立循环扫描链表。

当当前结点指针域不为空且数据域等于x的时候,申请结点并给此结点数据域赋值为y,然后插入当前结点后面,退出函数;

当当前结点指针域为空的时候,申请结点并给此结点数据域赋值为y,插入当前结点后面,退出函数。

数据插入函数为:

voidinsert(LNode*h)

LNode*r,*s;

intx,y;

Inputthedatathatyouwanttoinsert:

\n"

x="

/*输入x值*/

y="

y);

/*输入y值*/

for(;

;

r=r->

link)

if(r->

data==x)/*当当前结点指针域不为空且数据域等于x的时候…*/

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

s->

data=y;

link=r->

r->

break;

}

link==NULL)/*当当前结点指针域为空的时候*/

(4)输入k,删除单链表中所有的结点k,并输出被删除结点的个数。

建立三个结构体指针,一个指向当前结点,另一个指向当前结点的上一结点,最后一个备用;

建立整形变量l=0;

建立循环扫描链表。

当当前结点指针域为空的时候,如果当前结点数据域等于k,删除此结点,l++,跳出循环,结束操作;

如果当前结点数据域不等于k,跳出循环,结束操作。

当当前结点指针域不为空的时候,如果当前结点数据域等于k,删除此结点,l++,继续循环操作;

如果当前结点数据域不等于k,指针向后继续扫描。

循环结束后函数返回变量l的值,l便是删除的结点的个数。

数据删除函数为:

intdel(LNode*h)

LNode*r,*s,*t;

intk,l=0;

printf("

Inputthedatathatyouwanttodelete:

scanf("

k);

r=h;

s=r;

r=r->

for(;

link==NULL)/*当当前结点指针域为空的时候*/

if(r->

data==k)/*如果当前结点数据域不等于k…*/

{

l++;

s->

free(r);

break;

}

elsebreak;

/*如果当前结点数据域等于k…*/

else/*当当前结点指针域不为空的时候*/

data==k)/*如果当前结点数据域不等于k…*/

t=r;

link=t->

r=t->

free(t);

else{r=r->

s=s->

}/*如果当前结点数据域不等于k…*/

returnl;

完整的源程序为:

#include"

stdio.h"

#include"

conio.h"

#defineDataTypeint

typedefstructnode

DataTypedata;

structnode*link;

}LNode;

LNode*h;

intx,tag;

system("

cls"

=tag)

voidoutput(LNode*h)

system("

for(i=0;

data[%d]=%d\n"

getch();

voidinsert(LNode*h)

data==x)

link==NULL)

intdel(LNode*h)

LNode*r,*s,*t;

intk,l=0;

s=r;

data==k)

else

returnl;

voidnodata()

Youhadnotinputdata.\n\n\n"

Press\"

Enter\"

toreturn"

getch();

main()

inta,b=1,c,l;

h=-1;

b==1;

printf("

1.Createalinearlist.\n"

2.Outputthedataoflinearlist.\n"

3.Insertdata.\n"

4.Deletedata.\n"

5.Exit\n"

a);

switch(a)

case1:

createtail();

break;

case2:

if(h==-1)nodata();

elseoutput(h);

case3:

if(h==-1)nodata();

elseinsert(h);

case4:

else{l=del(h);

Youhavedeleted%ddata(s)\n"

l);

}break;

default:

b=3;

end."

三、实验结果和数据处理

(1)初始界面:

程序以菜单形式列出5个功能:

1.Createalinearlist.(新建一个链表)

2.Outputthedataoflinearlist.(输出链表的数据)

3.Insertdata.(插入数据)

4.Deletedata.(删除数据)

5.Exit.(退出)

需要注意的是,程序必须先运行第一项后才能运行二三四项,否则会提示出错:

(2)新建一个链表:

首先输入结束标志,这里我设为-100,当我在输入数据的时候输入-100便停止数据输入。

然后输入数据,在此我便输入1-9九个数字作为九个数据,然后输入-100停止操作,返回初始界面。

到此便成功建立一个链表。

(3)输出链表的数据:

(4)插入数据:

例如我想在数据为3后面插入一个数据100:

完成操作后输出数据为:

(5)删除数据:

例如我想删除刚刚插入的数据100:

完成操作后输出数据为:

需要注意的是,删除操作会把链表中所有数值域中的数值等同于指定数字的结点全部删除。

四、总结

实验之前由于准备不够充分,所以堂上实验时只完成了建立单链表和数据的输出,而后面两个实验要求也是用来很多时间长完成的。

以后做实验前,一定要做好充分的准备,有一个清晰的思路,遇到更复杂的实验也一定能轻松完成。

五、问题与讨论

1、简要分析程序的时间复杂度;

设n为输入的数据个数。

根据程序代码,四个实验要求各只有一个循环,实验的运行时间为:

4n,则程序的时间复杂度为O(n)

2、在实验过程中遇到的问题及解决办法。

虽然数据结构比C语言更加复杂,但是通过参照和模仿书上的例子,用心去学习,还是能把复杂的问题克服的。

[文档可能无法思考全面,请浏览后下载,另外祝您生活愉快,工作顺利,万事如意!

]

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

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2