- 1、本文档共11页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
单链表试验汇报
试验目的与规定
1、实現单链表的建立;
2、掌握单链表的插入、删除和查找运算;
3、纯熟进行C語言源程序的编辑调试。
试验内容
(1)建立带表头結点的单链表;
首先输入結束标志,然后建立循环逐一输入数据,直到输入結束标志。
数据输入的函数為:
LNode*createtail()
{
LNode*s,*r;
intx,tag;
printf(inputthesignofending:);/*输入結束标志*/
scanf(%d,tag);
h=(LNode*)malloc(sizeof(LNode));/*建立表头結点*/
h-data=tag;
r=h;
printf(inputthedata:);
scanf(%d,x);
while(x!=tag)/*建立循环逐一输入数据*/
{
s=(LNode*)malloc(sizeof(LNode));
s-data=x;
r-link=s;
r=s;
scanf(%d,x);
}
r-link=NULL;
returnh;
}
(2)输出单链表中所有結点的数据域值;
首先获得表头結点地址,然后建立循环逐一输出数据,直到地址為空。
数据输出的函数為:
voidoutput(LNode*h)
{
LNode*r;
inti;
r=h;
for(i=1;r-link!=NULL;i++)
{
printf(%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;
printf(Inputthedatathatyouwanttoinsert:\n);
printf(x=);
scanf(%d,x);/*输入x值*/
printf(y=);
scanf(%d,y);/*输入y值*/
r=h;
r=r-link;
for(;;r=r-link)
{
if(r-data==x)/*当目前結点指针域不為空且数据域等于x的時候…*/
{
s=(LNode*)malloc(sizeof(LNode));
s-data=y;
s-link=r-link;
r-link=s;
break;
}
if(r-link==NULL)/*当目前結点指针域為空的時候*/
{
s=(LNode*)malloc(sizeof(LNode));
s-data=y;
s-link=NULL;
r-link=s;
break;
}
}
}
(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(%d,k);
r=h;
s=r;
r=r-link;
for(;;)
文档评论(0)