欢迎来到天天文库
浏览记录
ID:9860470
大小:264.50 KB
页数:14页
时间:2018-05-12
《数据结构课程设计报告---链表操作》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、《数据结构》课程设计报告题目:_________链表操作__________专业班级:_______10软件一班________姓名:________*********_________学号:_______**________设计时间:_________2012-09-13________指导教师:__________杨薇薇___________一、设计题目链表操作一、设计目的1.掌握线性链表的建立。2.掌握线性链表的基本操作。二、设计内容和要求利用链表的插入运算建立线性链表,然后实现链表的查找、删除、计数、输出、排序、逆置等运算,插入、
2、删除、查找、计数、输出、排序、逆置要单独写成函数,并能在屏幕上输出操作前后的结果。二、运行环境(软、硬件环境)硬件环境:软件环境:MicrosoftVisualC++6.0三、算法设计思想插入:先创建一个结点用来存储要插入的元素,然后,通过单链表的指针功能,修改指针的指向来将新创建的结点插入该单链表中。删除:通过循环找到要删除的位置,然后也是通过修改指针来将该位置的元素删除。查找:声明三个变量和一个数组,其中两变量分别表示查找元素的个数和在链表中出现的位置,一数组储存该元素在链表之中的位置,另外一变量作数组下标的递增之用。通过循环和if语
3、句的条件比较来确定元素的位置和在链表之中的出现次数,保存于数组中,最后可将该元素在链表中的位置通过数组输出。计数:用一结构体数组储存链表中各元素和其出现的次数然后通过双重循环来确定各元素的个数。排序:可将简单的选择排序将循环条件变作指针表示得到。逆置:用循环找到单链表的倒数第二个结点和最后一个结点,再声明一个新的结点将其指向最后一个结点,然后令链表的倒数第二个结点空(由此作为循环的截止条件),在用外层循环一步步将链表结点倒序接到以新增结点为头结点的链表上。四、流程图开始选择排序方式退出逆置排序计数查找删除插入输出结果结束五、算法设计与分析
4、插入:先创建一个结点用来存储要插入的元素,然后,通过单链表的指针功能,修改指针的指向来将新创建的结点插入该单链表中。该算法简单易行。删除:通过循环找到要删除的位置,然后也是通过修改指针来将该位置的元素删除。查找:声明三个变量和一个数组,其中两变量分别表示查找元素的个数和在链表中出现的位置,一数组储存该元素在链表之中的位置,另外一变量作数组下标的递增之用。通过循环和if语句的条件比较来确定元素的位置和在链表之中的出现次数,保存于数组中,最后可将该元素在链表中的位置通过数组输出。计数:用一结构体数组储存链表中各元素和其出现的次数然后通过双重循
5、环来确定各元素的个数。此算法不足之处是会删除重复的结点,导致计数前后链表变化。排序:可将简单的选择排序将循环条件变作指针表示得到。逆置:用循环找到单链表的倒数第二个结点和最后一个结点,再声明一个新的结点将其指向最后一个结点,然后令链表的倒数第二个结点空(由此作为循环的截止条件),在用外层循环一步步将链表结点倒序接到以新增结点为头结点的链表上。六、源代码#include#include#includetypedefstructnode{intdata;structnode*next;
6、}node,*linklist;//创建链表voidcreatlist(linklist&l){linklistp,r;l=(linklist)malloc(sizeof(node));l->next=NULL;r=l;printf("输入链表以0结束");for(;;){p=(linklist)malloc(sizeof(node));scanf("%d",&p->data);r->next=p;if(p->data!=0)r=p;else{free(p);break;}}r->next=NULL;}//将e插到第i位voidins
7、ertlist(linklist&l,inti,inte){intj;linklists,f;s=(linklist)malloc(sizeof(node));f=(linklist)malloc(sizeof(node));f->data=e;s=l;for(j=1;jnext;}f->next=s->next;s->next=f;}//查找元素evoidSearchelem(linklistl,inte){intcounti=0,counte=0,s=0;inta[100];while(l->next){co
8、unti++;if(l->next->data==e){counte++;a[s++]=counti;}l=l->next;}if(counte==0){printf("该链表中无此数!"
此文档下载收益归作者所有