- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验3单链表的操作与应用
实验3 单链表的基本操作与应用
一、实验目的
(1) 通过实验,进一步培养学生利用C语言进行编程和调试程序的能力,使学生能够利用C语言编写较复杂的程序。
(2) 通过实验,加深对单链表的理解,掌握线性表的链式存储表示和基本操作,验证所学的算法和数据结构。
(3) 通过实验,使学生学会使用链表的基本操作解决实际问题,同时提高算法的分析能力。
(1) 给出程序设计的基本思想、原理和算法描述。
(2) 源程序给出注释。
(3) 保存和打印出程序的运行结果,并结合程序进行分析。
三、实验编写程序验证单链表的基本操作。
要求:参见linklist.h 和linklist.c补全程序清单,然后在中调试并运行。
将一个带头结点单链表L中所有值为偶数的结点放在所有值为奇数结点的前面void ChangeList(slink *L)
(3) 将一个带头结点单链表L中所有值为x的结点删除/***************linklist.h******************/
/*The head file includes the seven basic operations of a linklist.*/
#include alloc.h
#include stdio.h
/*结点类型定义*/
typedef int ElemType;
typedef struct node
{
ElemType data;
struct node *next;
}slink;
/*函数说明*/
slink *initlist( );
slink *CreateFromTail();
slink* CreateFromHead ();
int getlen(slink * L);
int getelem(slink * L,int i,ElemType *e);
int locate( slink * L, ElemType x);
int insert(slink *L, int i, ElemType x);
int delete(slink *L, int i,ElemType *e);
void list(slink *L);
/*函数定义*/
slink *initlist( )
{/*创建一个带头结点的空链表L*/
slink *L;
(1);
(2);
return L;
}
/*尾插法创建带头结点的单链表*/
slink * CreateFromTail()
{ /*将新增的整数追加到链表的末尾*/
slink *L, *r, *s;
ElemType x;
L=initlist(); /* 初始化为空表 */
r=L; /* r指针始终动态指向链表的当前表尾,其初值指向头结点 */
scanf(%d,x);
while(x != -9999)
{ s=(slink*)malloc(sizeof(slink));
s-data=x;
(3);
(4);
scanf(%d,x);
}
r-next=NULL; /* 将最后一个结点的next链域置为空, 表示链表的结束 */
return L;
}
/*头插法创建带头结点的单链表*/
slink* CreateFromHead ()
{ /*从键盘接收整数,数据以-9999结束,头插法建立带头结点的单链表L*/
slink *L,*s;
ElemType x;
L= initlist( ) ;/*链表L初始化*/
scanf(“%d”,x);/*读入第一个数据*/
while(x!=-9999)/*依次插入数据到表头*/
{ s=(slink*)malloc(sizeof(slink)); /* 为读入的数据分配存储空间 */
s-data=x;
s-next=L-next;
L-next=s;
scanf(“%d”,x);
}
return L;
}
int getlen(slink * L) /* 本算法用来求带头结点单链表L长度 */
{ slink *p;
int i=0; /* 用来存放单链表的长度 */
p=L-next;
while(p!=NULL)
{ (5);
i++;
}
return i;
}
int getelem (slink * L, int i, ElemType *e)
/* 在带头结点的单链表L中查找第i个结点, 若找到(1≤i≤n), 则将该结点的元素值带回,返回
原创力文档


文档评论(0)