数据结构课程设计报告---链表操作.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文档。上传文档
查看更多
数据结构课程设计报告---链表操作 数据结构课程设计 课 程: 数据结构 题 目: 链表操作 专业班级: 09软件工程(1)班 设计时间: 2011 指导教师: 一、 设计题目 课程设计题四:链表操作 1、设计目的 ?掌握线性链表的建立。 ?掌握线性链表的基本操作。 2、设计内容和要求 利用链表的插入运算建立线性链表,然后实现链表的查找、删除、 计数、输出、排序、逆置等运算,插入、删除、查找、计数、输出、 排序、逆置要单独写成函数,并能在屏幕上输出操作前后的结果。 二、 运行环境(软、硬件环境) 硬件环境:普通PC机 软件环境:VC6.0 三、 算法设计的思想 选用单链表作为数据元素的存储结构,对每个数据元素,由一个数据域和一个指针域组成,数据域放输入的数值,指针域指向下一个结点 数据结构 单链表结点类型 typedef struct LNode{ ElemType data; struct LNode *next; }LinkList; 模块划分 void InitList(LinkList L)//初始化 int ListInsert_L(LinkList L,int i,ElemType e)//插入元素 ElemType ListDelete_L(LinkList L,int i)//删除元素 int Count(LinkList L,ElemType e)//查找元素的位置 void PrintList(LinkList L)//打印链表 LinkList SortList(LinkList *L)//递增排序函数 void ReverseOrder(LinkList L)//求逆序 void main()//主函数,分别调用以上的子函数 功能设计 首先利用元素插入法建立链表建立链表,然后导出菜单,用switch调用各个子函数,实现链表的查找、删除、计数、输出、排序、逆置等运算,其中元素插入用的是头插法,排序用的是冒泡法。 四、 算法的流程图 主流程图: 定义单链表 结点类型 主函数main( ) 插删查打递求 入除找印增链 函结元链排表 表 数 点素序逆 函位函序 数 置 数 元素插入: LinkList *s,*p N pji-1 Y p=p-next; j++ j++; N !p||ji-1 Y s=(LinkList *)malloc(sizeof(Link return 1; List)); s-data=e; s-next=p-next; p-next=s; 五、 算法设计分析 首先利用元素插入法建立链表建立链表,然后导出菜单,用switch调用各个子函 数,实现链表的查找、删除、计数、输出、排序、逆置等运算,其中元素插入用的 是头插法,排序用的是冒泡法,冒泡排序是稳定排序 for(p=L;p!=NULL;p=p-next) { for(q=p-next;q!=NULL;q=q-next) { if(p-dataq-data) { temp=q-data; q-data=p-data; p-data=temp; } } } 六、 源代码 #define NULL 0 #include stdio.h #include malloc.h typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LinkList; void InitList(LinkList L)//初始化 { L.next=NULL; } int ListInsert_L(LinkList L,int i,ElemType e)//插入元素 { LinkList *s,*p; p=L; int j=0; while(pji-1) { p=p-next; j++; } if(!p||ji-1)return 0; s=(LinkList *)malloc(sizeof(LinkList)); s-data=e; s-next=p-next; p-next=s; return 1; } ElemType ListDelete_L(LinkList L,int i)//删除元素 { LinkList *q,*p=L; ElemType e; int j=0; while(p-nextji-1) { p=p-next; j++; } if(!p-nextji-1) return 0; q=p-next; p-next=q-next; e=q-data;

文档评论(0)

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

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

1亿VIP精品文档

相关文档