




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安全培训职责
- 2025年威海市立医院公开招聘高层次急需紧缺专业技术人才(33人)模拟试卷及一套答案详解
- 2025江苏徐州选聘徐州泉山经济开发区投资发展有限公司总经理(四)模拟试卷及答案详解(名校卷)
- 2025湖南株洲市自然资源和规划局选聘考前自测高频考点模拟试题完整答案详解
- 王冕好学古文课件
- 2025广西百色市田阳区消防救援大队政府招聘专职消防员9人模拟试卷及一套完整答案详解
- 安全培训考核的目的课件
- 2025内蒙古通辽新正电工技术服务有限公司招聘41人模拟试卷及答案详解(必刷)
- 2025年4月广东深圳市第二特殊教育学校面向2025年应届毕业生赴外招聘教师4人模拟试卷及完整答案详解1套
- 洗车流程课件
- 租房安全协议合同书
- 蜜雪冰城测试题及答案
- 2025年化工应聘面试试题及答案
- 劳务公司协议合同范本
- 登高作业安全培训
- 学校食堂监督方案
- 预制混凝土板施工方案及技术措施
- MMD破碎机培训手册
- 沐足行业严禁黄赌毒承诺书1
- 智能书架解决方案
- 高空作业车的安全技术交底
评论
0/150
提交评论