实验3单链表的操作与应用.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档