ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:38.59KB ,
资源ID:19249259      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19249259.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构顺序表与链表Word格式文档下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构顺序表与链表Word格式文档下载.docx

1、 本程序包含的函数 主函数 main() 判断是否对称函数Symmetric() 排序的函数DataSort() 其中main函数负责操作其他的函数。三、调试分析 在调试过程中要注意的就是输入多注意特殊值以及不要输入错误那个个数,因为要求输入的数比较多,所以要细心一点 四、详细代码及运行结果#include stdlib.h#define MAX 300int Symmetric(int L,int m);void DataSort(int number,int r);int main() int AMAX = 0, OddMAX = 0, EvenMAX = 0; int B500, C50

2、0, D1000; int Lb, Lc; int i, La, a, n, p, w; int Found, flag = 0, time = 0, k = 0, tb = 0, tc = 0; scanf(%d,&La); for(i = 0; i La; i+)Ai);Found); printf(%d ,Ai); if(Ai = Found) flag = 1; n); if(flag = 1)Yes,I found it! elseNot found! a = Symmetric(A,La); if(a = 1) printf(Its symmetric.n else printf(

3、It isnt symmetric.n i = 0; while(i La) if(Ai % 2 = 0) Eventime+ = Ai; i+; else if(Ai % 2 != 0) Oddk+ = Ai; for(p = k, w = 0; w time; w+, p+) Oddp = Evenw; for(p = 0; p (time + k); p+),Oddp); DataSort(A,La);Lb);Lc); Lb;Bi); for(n = 0; n Ctc) Di = Btb; tb+; Di = Ctc; tc+;,Di); return 0;int Symmetric(i

4、nt L,int m) int l; if(m % 2 = 0) for(l = 0; l m / 2; l+) if(Ll != Lm - l - 1) (m - 1) / 2; return 1;void DataSort(int number,int r) int j, h, o, num; for(j = 0; j r - 1; j+) h = j; for(o = j + 1; o numberh) h = o; if(h != j) num = numberh; numberh = numberj; numberj = num;,numberj);2、链表的应用(1)键盘输入一组元

5、素,建立一个无头结点的单向链表(无序)。(2)遍历(打印)单向链表。(3)把单向链表中元素逆置(不允许申请新的结点空间)。(4)在单向链表中删除所有的偶数元素结点。(5)对链表排序,排序后链表元素按照非递减方式排列(注意:排序时如果要交换两个结点的顺序,不得通过交换结点的内容,而需要使用改变指针的方式交换结点的位置。建议使用直接插入排序算法)。(6)利用算法5建立两个非递减有序单向链表,然后合并成一个非递减链表。(7)利用算法1建立的链表,删除链表中的重复元素。(8)利用算法1建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。(9)判断算法1和

6、算法5生成单链表所表示的集合是否相等。(10)在主函数中设计一个简单的菜单,分别调试上述算法。一、概要设计 本程序包含的函数 建立链表函数 Linklist create() 复制单链表内容函数Linklist Copy() 遍历链表函数 Outline() 逆置单链表函数Linklist nizhi() 删除偶数结点函数 DeleteEven() 链表排序函数 Linklist Sort() 将两个链表合并函数fuzhi() 删除链表重复元素Linklist DeleteEqual() 将链表分为一个奇数链表和一个偶数链表函数Separate() 判断链表是否相等函数judge()二、调试分

7、析在调试的过程中在算法六中一直出现错误,两个链表合并后排序输出时一直多输入一个元素,在第四个算法的时候开始理解错了题目的意思,最后发现是要删除偶数的结点,其他的有参考其他的代码三、使用说明 运行后直接输入19的数来执行整个代码的功能1.输入链表一的元素2.遍历链表3.把单向链表逆置4.删除偶数结点5.对链表非递减排序6.建立链表,合并,按非递减排序7.删除单链表中的重复元素8.将链表分解成一个奇数链表一个偶数链表9.判断算法一与算法五生成的单链表是否相等四、源代码typedef struct Node int data; struct Node *next; LNode,*Linklist;L

8、inklist create() Linklist head,p,q; head = (Linklist)malloc(sizeof(LNode); head-next = NULL; p = head; int n;n); while(n != -1) q = (Linklist)malloc(sizeof(LNode); q-data = n; p-next = q; p = q; return head;Linklist Copy(Linklist L) Linklist p,q,r,s; p = NULL; q = L; for(;q != NULL;) r = (Linklist)m

9、alloc(sizeof(LNode); r-data = q-data; if(p = NULL) p = s = r; s-next = r; s = r; q = q-next; return p;void Outline(Linklist L) Linklist p; p = L- while(p != NULL),p-data); p = p-Linklist nizhi(Linklist L) Linklist p, q, head = Copy(L); p = head- while(p) q = p;next = head-void DeleteEven(Linklist L)

10、 Linklist q,q1,head = Copy(L),p; int i = 1; q1 = head; q = head;next, i+) if(i % 2 = 0)next = q- Outline(q1);Linklist Sort(Linklist L) Linklist p,q,r,head = Copy(L); if(p ! r = p- p = r; while(q-next != NULL &next-data next! r = r-next); Outline(Sort(p);Linklist DeleteEqual(Linklist L)next) if(q-dat

11、a = p- r = q-next = r- free(r);void Separate(Linklist L) Linklist p, q, r, s, k,head = Copy(L); p = (Linklist)malloc(sizeof(LNode); s = q; k = head- while(k) if(k-data % 2 = 0)next = k; r = k; k = k- s = k; Outline(p); Outline(q);void judge(Linklist L1,Linklist L2) Linklist p = L1,q = L2;p !next, q

12、= q- if(p-data != q-Different! return;Same! Linklist M, L1, L2; M = (Linklist)malloc(sizeof(LNode); L1 = (Linklist)malloc(sizeof(LNode); L2 = (Linklist)malloc(sizeof(LNode); while(scanf(n) != EOF) switch(n) case 1:算法一:输入链表一的元素n M = create(); break; case 2:算法二:遍历链表n Outline(M); case 3:算法三:把单向链表逆置n Ou

13、tline(nizhi(M); case 4:算法四:删除偶数结点n DeleteEven(M); case 5:算法五:对链表非递减排序n Outline(Sort(M); case 6:算法六:建立链表,合并,按非递减排序n L1 = create(); L2 = create(); fuzhi(L1,L2); case 7:算法七:删除单链表中的重复元素n Outline(DeleteEqual(M); case 8:算法八:将链表分解成一个奇数链表一个偶数链表n Separate(M); case 9:算法九:判断算法一与算法五生成的单链表是否相等n judge(M,Sort(M); case 0: exit(0); default:输入错误!【选作内容】(11)利用算法5建立两个非递减有序单向链表,然后合并成一个非递增链表。(12)采用单向链表实现一元多项式的存储并实现两个多项式相加并输出结果。【注意事项】1.为了看到操作结果,在每次链表操作后,均需打印出链表的内容。2.单向链表的操作是数据结构的基础,一定要注意对这部分的常见算法的理解。3.演示及撰写实验报告时,一定要注意各种情况的测试。比如算法7删除节点的操作, 至少要测试以下几种情况:(1)找不到元素;(2)要删除的元素是链表第一个节点;(3)要删除的元素是链表的最后一个节点;(4)要删除的元素在链表的中间。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1