2024年单链表 实验报告.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

181****8523 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档