数据结构——期末数据结构试验测试题含答案x_第1页
数据结构——期末数据结构试验测试题含答案x_第2页
数据结构——期末数据结构试验测试题含答案x_第3页
数据结构——期末数据结构试验测试题含答案x_第4页
数据结构——期末数据结构试验测试题含答案x_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、序,找不到返回 0 #include typedef structint 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( 请输入需要查找的数:

4、n); scanf(%d,&e); for(i=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. 某顺序表(自己定义、建立) ,在合法的位置插入某数据元素 #include typedef structint elem100;int length;sqlist;void create(sq

5、list *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);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+

6、;main()sqlist l;int m,e,i;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. 某顺序表(自己定义、建立) ,在合法的位置删除某数据元素 #include typedef structint elem100;int length;sqlist;void create(sqlist *

7、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);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(

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

9、nt(sqlist L,int n)int i;printf( 顺序表为: );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);prin

10、t(l,m);printf( 此顺表逆置后为: );nizhi(l,m);5. 用头插法建立单链表,并输出#include typedef struct Lnodeint 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;whil

11、e(p) printf(-%d,p-data); p=p-next;printf(n);void main()int m=6;Lnode *head; head=create(m); print(head);6. 用尾插法建立单链表,并输出 #include typedef struct Lnodeint 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=

12、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 main()int m=6;Lnode *head;head=create(m);print(head);7. 某单链表(自己定义、建立) ,就地逆置(即不另设置空间) #include typedef struct Lnodeint data;struct Lnode *next;Lnode,*Linklist;Linklist cre

13、ate(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(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-next;

14、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 #include typedef struct Lnodeint data;struct Lnode *next;Lnode,*Linklist;Linklist create(int n)int i;Linklist L;Linklist p;Linklist r

15、;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( 该结点的数据域是: %dn,p-d

16、ata);elsereturn 0; p=p-next; i+;void main()int m=6;Lnode *head; head=create(m); print(head); locate(head);,求其长度9. 某单链表(自己定义、 #include typedef struct Lnodeint 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;id

17、ata=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(head);printf( 单链表长度: %dn,length(head);

18、10. 某单链表(自己定义、建立) ,在合法的位置插入某数据元素 #include typedef struct Lnodeint 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(Linklist L)Linklist p;p=L-next;while(p)print

19、f(-%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);printf( 请输入需要插入的数: n); scanf(%d,&e);n);printf( 请输入需要插入数

20、的位置: scanf(%d,&i);insert(head,i,e);printf( 新的单链表是 :); print(head);11. 某单链表(自己定义、建立) ,在合法的位置删除某数据元素 #includetypedef struct Lnodeint 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

21、;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;head=create(m);print(head);printf( 请输入需要删除的结点位置: n); scanf(%d,&e)

22、; del(head,e); print(head);12. 某单链表(自己定义、建立) ,在最后位置插入或删除 #include typedef struct Lnodeint 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(Linklist L)Linklist

23、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-next!=NULL)q=p; p=p-next;q-next=NULL;delete p;void main()int m=6,e;Lnode *head;h

24、ead=create(m);print(head);printf( 请输入需要插入的数: n); scanf(%d,&e);insert(head,e);printf( 新的单链表是 :); print(head);printf( 删除后的单链表是: n); del(head);print(head);13. 某二叉链表(自己定义、建立) ,输出前序、中序、后序遍历序列 #includetypedef struct Bitnodeint data;struct Bitnode *lchild,*rchild;Bilnode,*Bitree;Bitree create()char ch;Bitr

25、ee t;ch=getchar();if(ch=*)t=NULL;elset=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(t)inorder(t-lchild);printf(%c,t-data);inorder(t-rchild);void houxu(Bitree t)if(t)houxu(t-lc

26、hild);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);printf(n);14. 某二叉链表(自己定义、建立) ,求其高度(深度)#includetypedef struct Bitnode int data;struct

27、Bitnode *lchild,*rchild;Bilnode,*Bitree;Bitree create() char ch;Bitree t; ch=getchar(); if(ch=*) t=NULL;elset=new Bilnode; t-data=ch; t-lchild=create(); t-rchild=create();return t;int length(Bitree t)int h1,h2;if(t=NULL)return 0;else h1=length(t-lchild);h2=length(t-rchild);if(h1h2)return h1+1;elsere

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论