数据结构-期末数据结构实验测试题(含答案)docx(DOC 21页).docx

上传人(卖家):2023DOC 文档编号:5579133 上传时间:2023-04-25 格式:DOCX 页数:22 大小:14.70KB
下载 相关 举报
数据结构-期末数据结构实验测试题(含答案)docx(DOC 21页).docx_第1页
第1页 / 共22页
数据结构-期末数据结构实验测试题(含答案)docx(DOC 21页).docx_第2页
第2页 / 共22页
数据结构-期末数据结构实验测试题(含答案)docx(DOC 21页).docx_第3页
第3页 / 共22页
数据结构-期末数据结构实验测试题(含答案)docx(DOC 21页).docx_第4页
第4页 / 共22页
数据结构-期末数据结构实验测试题(含答案)docx(DOC 21页).docx_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、1 某顺序表(自己定义、建立),查找某数据元素,找到返回位序,找不到返回02 某顺序表(自己定义、建立),在合法的位置插入某数据元素3 某顺序表(自己定义、建立),在合法的位置删除某数据元素4 某顺序表(自己定义、建立),就地逆置(即不另设置空间)5 用头插法建立单链表,并输出6 用尾插法建立单链表,并输出7 某单链表(自己定义、建立),就地逆置(即不另设置空间)8 某单链表(自己定义、建立),查找某数据元素,找到返回位序,找不到返回09 某单链表(自己定义、建立),求其长度10 某单链表(自己定义、建立),在合法的位置插入某数据元素11 某单链表(自己定义、建立),在合法的位置删除某数据元素

2、12 某单链表(自己定义、建立),在最后位置插入或删除13 某二叉链表(自己定义、建立),输出前序、中序、后序遍历序列14 某二叉链表(自己定义、建立),求其高度(深度)15 某二叉链表(自己定义、建立),求其叶子结点数16 某二叉链表(自己定义、建立),求其总结点个数17 某二叉链表(自己定义、建立),将其左右子树交换方式:抽签,单人单桌,每组8-10人,杜绝作弊!时间:30分钟总分:100分 数据结构C语言描述10分 数据结构建立30分 基本操作30分 主函数20分 运行结果10分用途:20%计入学业成绩1.某顺序表(自己定义、建立),查找某数据元素,找到返回位序,找不到返回0#inclu

3、detypedef struct int elem100; int length;sqlist; void create(sqlist *L,int n) int i;printf(请输入%d个数:n,n);for(i=0;ielemi); L-length=n; void print(sqlist L,int n) int i;printf(顺序表为:);for(i=0;in;i+) printf(-%d,L.elemi);printf(n); int locate(sqlist L,int n) int i,e;printf(请输入需要查找的数:n);scanf(%d,&e);for(i=

4、0;in;i+)if(L.elemi=e) printf(找到该数据:%dn该数据的位置是:%dn,e,i); continue; return 0; main() sqlist l;int m; printf(输入此顺序表总数据的个数:); scanf(%d,&m); create(&l,m); print(l,m);locate(l,m);2. 某顺序表(自己定义、建立),在合法的位置插入某数据元素#includetypedef struct int elem100; int length;sqlist; void create(sqlist *L,int n) int i;printf(

5、请输入%d个数:n,n);for(i=0;ielemi); L-length=n; void print(sqlist L,int n) int i;printf(顺序表为:);for(i=0;in;i+) printf(-%d,L.elemi);printf(n); void insert(sqlist *L,int i,int e) int j; if(iL-length+1) printf(error);for(j=L-length;j=i-1;j-)L-elemj=L-elemj-1;L-elemi-1=e;L-length+; main() sqlist l; int m,e,i;

6、printf(输入此顺序表总数据的个数:); scanf(%d,&m); create(&l,m); print(l,m);printf(请输入需要插入的数据:n);scanf(%d,&e);printf(请输入需要插入数的位置:n);scanf(%d,&i);insert(&l,i,e);print(l,l.length);3. 某顺序表(自己定义、建立),在合法的位置删除某数据元素#includetypedef struct int elem100; int length;sqlist; void create(sqlist *L,int n) int i;printf(请输入%d个数:n

7、,n);for(i=0;ielemi); L-length=n; void print(sqlist L,int n) int i;printf(顺序表为:);for(i=0;in;i+) printf(-%d,L.elemi);printf(n); void del(sqlist *L,int i) int j; if(iL-length+1) printf(error); for(j=i;jlength-1;j+)L-elemj-1=L-elemj;L-length-; main() sqlist l; int m,e; printf(输入此顺序表总数据的个数:); scanf(%d,&m

8、); create(&l,m); print(l,m);printf(请输入需要删除数据位置:n);scanf(%d,&e);del(&l,e);print(l,l.length);4. 某顺序表(自己定义、建立),就地逆置(即不另设置空间)#includetypedef struct int elem100; int length;sqlist; void create(sqlist *L,int n) int i;printf(请输入%d个数:n,n);for(i=0;ielemi); L-length=n; void print(sqlist L,int n) int i;printf(

9、顺序表为:);for(i=0;in;i+) printf(-%d,L.elemi);printf(n); void nizhi(sqlist L,int n) int i,t; for(i=0;in/2;i+) t=L.elemi;L.elemi=L.elemn-i-1;L.elemn-i-1=t; for(i=0;in;i+) printf(-%d,L.elemi);printf(n); main() sqlist l; int m; printf(输入此顺序表总数据的个数:); scanf(%d,&m); create(&l,m); print(l,m);printf(此顺表逆置后为:);

10、 nizhi(l,m);5. 用头插法建立单链表,并输出#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i; Linklist L; Linklist p; L=new Lnode; L-next=NULL; for(i=0;idata=i; p-next=L-next; L-next=p; return L;void print(Linklist L)Linklist p;p=L-next;while(p)printf(-%d,p-data)

11、;p=p-next;printf(n);void main() int m=6; Lnode *head; head=create(m); print(head);6. 用尾插法建立单链表,并输出#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i; Linklist L; Linklist p;Linklist r; L=new Lnode; L-next=NULL; r=L; for(i=0;idata=i; r-next=p; r=p; p

12、-next=NULL; return L;void print(Linklist L)Linklist p;p=L-next;while(p)printf(-%d,p-data); p=p-next; printf(n);void main() int m=6; Lnode *head; head=create(m); print(head);7. 某单链表(自己定义、建立),就地逆置(即不另设置空间)#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)i

13、nt i; Linklist L; Linklist p;Linklist r; L=new Lnode; L-next=NULL; r=L; for(i=0;idata=i; r-next=p; r=p; p-next=NULL; return L;void print(Linklist L)Linklist p;p=L-next;while(p)printf(-%d,p-data); p=p-next; printf(n);void nizhi(Linklist L) Linklist p,q; p=L; p=p-next; L-next=NULL; while(p) q=p; p=p-n

14、ext; q-next=L-next; L-next=q; void main() int m=6; Lnode *head; head=create(m); print(head); printf(此逆置单链表为); nizhi(head); print(head);8. 某单链表(自己定义、建立),查找某数据元素,找到返回位序,找不到返回0#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i; Linklist L; Linklist p;L

15、inklist r; L=new Lnode; L-next=NULL; r=L; for(i=0;idata=i; r-next=p; r=p; p-next=NULL; return L;void print(Linklist L)Linklist p;p=L-next;while(p)printf(-%d,p-data); p=p-next; printf(n);int locate(Linklist L) int i=1,e; Linklist p;p=L-next;printf(请输入需要查找第几个的结点:);scanf(%d,&e);while(p)if(i=e)printf(该结

16、点的数据域是:%dn,p-data);elsereturn 0; p=p-next; i+; void main() int m=6; Lnode *head; head=create(m); print(head); locate(head);9. 某单链表(自己定义、建立),求其长度#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i; Linklist L; Linklist p;Linklist r; L=new Lnode; L-nex

17、t=NULL; r=L; for(i=0;idata=i; r-next=p; r=p; p-next=NULL; return L;void print(Linklist L)Linklist p;p=L-next;while(p)printf(-%d,p-data); p=p-next; printf(n);int length(Linklist L) int i=0; Linklist p;p=L-next; while(p) p=p-next; i+; return i;void main() int m=6; Lnode *head; head=create(m); print(he

18、ad); printf(单链表长度:%dn,length(head);10. 某单链表(自己定义、建立),在合法的位置插入某数据元素#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i; Linklist L; Linklist p;Linklist r; L=new Lnode; L-next=NULL; r=L; for(i=0;idata=i; r-next=p; r=p; p-next=NULL; return L;void print(

19、Linklist L)Linklist p;p=L-next;while(p)printf(-%d,p-data); p=p-next; printf(n);void insert(Linklist L,int i,int e) int j=0; Linklist p,s; p=L; if(!p)|(ji-1) printf(error); while(p&(jnext;+j;s=new Lnode;s-data=e;s-next=p-next;p-next=s; void main() int m=6,i,e; Lnode *head; head=create(m); print(head)

20、; printf(请输入需要插入的数:n);scanf(%d,&e); printf(请输入需要插入数的位置:n); scanf(%d,&i);insert(head,i,e);printf(新的单链表是:); print(head);11. 某单链表(自己定义、建立),在合法的位置删除某数据元素#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i; Linklist L; Linklist p;Linklist r; L=new Lnode;

21、L-next=NULL; r=L; for(i=0;idata=i; r-next=p; r=p; p-next=NULL; return L;void print(Linklist L)Linklist p;p=L-next;while(p)printf(-%d,p-data); p=p-next; printf(n);void del(Linklist L,int i)Linklist p,q;p=L;int j=0;while(p&(jnext;+j;q=p-next;p-next=q-next;delete q;void main() int m=6,e; Lnode *head; h

22、ead=create(m); print(head); printf(请输入需要删除的结点位置:n);scanf(%d,&e);del(head,e);print(head);12. 某单链表(自己定义、建立),在最后位置插入或删除#includetypedef struct Lnode int data; struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i; Linklist L; Linklist p;Linklist r; L=new Lnode; L-next=NULL; r=L; for(i=0;idata=i

23、; r-next=p; r=p; p-next=NULL; return L;void print(Linklist L)Linklist p;p=L-next;while(p) printf(-%d,p-data); p=p-next; printf(n);void insert(Linklist L,int e) Linklist p,s; p=L; while(p-next!=NULL)p=p-next;s=new Lnode;s-data=e;s-next=p-next;p-next=s; void del(Linklist L)Linklist p,q;p=L;while(p-nex

24、t!=NULL)q=p;p=p-next;q-next=NULL;delete p;void main() int m=6,e; Lnode *head; head=create(m); print(head); printf(请输入需要插入的数:n);scanf(%d,&e);insert(head,e);printf(新的单链表是:); print(head); printf(删除后的单链表是:n);del(head);print(head);13. 某二叉链表(自己定义、建立),输出前序、中序、后序遍历序列#includetypedef struct Bitnode int data;

25、struct Bitnode *lchild,*rchild;Bilnode,*Bitree;Bitree create() char ch; Bitree t; ch=getchar(); if(ch=*) t=NULL; else t=new Bilnode; t-data=ch; t-lchild=create(); t-rchild=create(); return t; void qianxu(Bitree t) if(t) printf(%c,t-data); qianxu(t-lchild); qianxu(t-rchild); void inorder(Bitree t) if

26、(t) inorder(t-lchild); printf(%c,t-data); inorder(t-rchild); void houxu(Bitree t) if(t) houxu(t-lchild); houxu(t-rchild); printf(%c,t-data); void main() Bitree t;printf(输入:);t=create();printf(这棵二叉树的前序遍历为:n);qianxu(t);printf(n);printf(这棵二叉树的中序遍历为:n);inorder(t);printf(n);printf(这棵二叉树的后序遍历为:n); houxu(t

27、);printf(n);14. 某二叉链表(自己定义、建立),求其高度(深度)#includetypedef struct Bitnode int data; struct Bitnode *lchild,*rchild;Bilnode,*Bitree;Bitree create() char ch; Bitree t; ch=getchar(); if(ch=*) t=NULL; else t=new Bilnode; t-data=ch; t-lchild=create(); t-rchild=create(); return t; int length(Bitree t) int h1,

28、h2;if(t=NULL)return 0; else h1=length(t-lchild); h2=length(t-rchild);if(h1h2)return h1+1;elsereturn h2+1; void main() Bitree t;printf(输入:);t=create();printf(这棵二叉树的高度为:%dn,length(t);15. 某二叉链表(自己定义、建立),求其叶子结点数#includetypedef struct Bitnode int data; struct Bitnode *lchild,*rchild;Bilnode,*Bitree;Bitre

29、e create() char ch; Bitree t; ch=getchar(); if(ch=*) t=NULL; else t=new Bilnode; t-data=ch; t-lchild=create(); t-rchild=create(); return t; int countzero(Bitree t) if(t=NULL) return 0; elseif(t-lchild=NULL&t-rchild=NULL) return 1; else return countzero(t-lchild)+countzero(t-rchild);void main() Bitre

30、e t;printf(输入:);t=create();printf(这棵二叉树叶子结点的个数为:%dn,countzero(t);16. 某二叉链表(自己定义、建立),求其总结点个数#includetypedef struct Bitnode int data; struct Bitnode *lchild,*rchild;Bilnode,*Bitree;Bitree create() char ch; Bitree t; ch=getchar(); if(ch=*) t=NULL; else t=new Bilnode; t-data=ch; t-lchild=create(); t-rch

31、ild=create(); return t; int count(Bitree t) if(t=NULL) return 0; else return count(t-lchild)+count(t-rchild)+1;void main() Bitree t;printf(输入:);t=create();printf(这棵二叉树的总结点个数为:%dn,count(t);17. 某二叉链表(自己定义、建立),将其左右子树交换#includetypedef struct Bitnode int data; struct Bitnode *lchild,*rchild;Bilnode,*Bitr

32、ee;Bitree create() char ch; Bitree t; ch=getchar(); if(ch=*) t=NULL; else t=new Bilnode; t-data=ch; t-lchild=create(); t-rchild=create(); return t; void change(Bitree t)if(t) Bitree a; a=t-lchild; t-lchild=t-rchild; t-rchild=a; change(t-lchild); change(t-rchild);void print(Bitree t) if(t) printf(%c,t-data); print(t-lchild); print(t-rchild); void main() Bitree t;printf(输入:);t=create();printf(交换后的二叉树先序遍历是:n);change(t);print(t);printf(n);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 待归类文档
版权提示 | 免责声明

1,本文(数据结构-期末数据结构实验测试题(含答案)docx(DOC 21页).docx)为本站会员(2023DOC)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|