数据结构(C语言)单链表的基本操作.docxVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 第4页 实验名称:实验一 单链表的基本操作 实验目的 熟练掌握线性表两类存储结构的描述方法。 实验内容 从键盘读入若干个整数,建一个整数单链表,并完成下列操作: (1)打印该链表; (2)在链表中插入一个结点,结点的数据域从键盘读入,打印该链表; (3)在链表中删除一个结点,被删结点的位置从键盘读入,打印该链表; (4)在链表中做查找:从键盘读入要查找的整数,将该整数在链表中的位置打印出来,若要查找的整数不在链表中,返回一个信息。 算法设计分析 (一)数据结构的定义 单链表存储结构定义为: struct Node; typedef struct Node * pnode; struct Node { int info; pnode link; }; typedef struct Node * LinkList; (二)总体设计 程序由主函数、创建单链表函数、链表长度函数、链表打印函数、插入正整数函数、删除函数、查询函数组成。其功能描述如下: (1)主函数:调用各个函数以实现相应功能 int main(void) //主函数 { printf(单链表的基本操作实验:\n); struct list *pnode; pnode = creat(); //创建 print(pnode); //输出 insert(pnode); //插入 print(pnode); //输出 _delete(pnode); //删除 print(pnode); //输出 _located(pnode); //查找 print(pnode); //输出 return 0 ; } (三)各函数的详细设计: Function1: struct list *creat()//创建链表; (1):申请表头节点空间 (2):输入-1结束输入; (3):结点的数据域从键盘读入; Function2:void print(struct list *pnode)//打印链表; (1):利用while循环输出结点的数据域; Function3:void insert(struct list *pnode)//插入; (1):定义一个整型变量flag 记录当前指定插入的位置; (2):利用if条件判断念输入的位置是否有效;// If(position =0||positionlength(pnode)) //当输入的位置小于0或者大于链表的长度时,继续输入,直到输入到正确的值为止; (3):申请一个结点空间(为即将插入的节点); (4):用q-info 记录插入节点的数据域; (5):用while(flag!=position)判断插入的位置; (6):if(t == pnode-next) 判断插入的位置是否为单链表头结点的后面;如果是,直接用 q-next = pnode-next; pnode-next = q; return ;插入结点; Function4:void _delete(struct list *pnode)//删除; (1):用if(position=0||positionlength(pnode)) 判断输入删除的位置是否在允许的范围0或 点链表的总长度,则重新输入; (2):while(flag!=positionp-next!=NULL) 找到需要删除的位置; (3):找到要删除的结点后,把要删除的结点架空,即可删除该结点; Fubction5:void _located(struct list *pnode)//查询位置上的数; Function6:void _located(struct list *pnode)//查询数值所在表的位置; (1):找到要查询数值的位置 while(flag!=number) { p=p-next; flag=p-info; position++; } (2):若未找到相关数值,则返回not found! if(!p) { printf(not found); } 实验测试结果及结果分析 测试结果 (二)结果分析 (1)单链表:1 2 3 4 5 6 (2)输入插入的位置为:9,显示无效插入位置 (3)重新输入插入位置3,输入插入值:7,则返回单链表,1 2 7 3 4 5 6 (4)输入删除的位置:8,显示无效删除位置 (5)从新输入删除位置:4;则返回单链表 1 2 7 4 5 6 (5)输入查询数值:3;则返回该数值在单链表中的位置:7 实验总结 通过本次的实验我对单链表有了更加深刻的了解

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档