




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 1 数据结构实验 一、实验目的、学习线性表的顺序表示和实现,会进行顺序表1 的插入、删除、合并、学习线性表的链式表示和实现,会进行链表的2 插入、删除、合并 二、实验内容的第三个)在顺序表ajcniydu、编程实现:1(1第三个位)删除顺序表ajcniydup。(2位置插入 置的元素。 合并。acdijtuy和cfklns2、编程实现将顺序表的第四个位asdfghjkl1)在链表、编程实现:3(第四个位置删除顺序表asdfghjkl。z(2)置插入 元素。 的合并。adfi和cefi4、编程实现两个有序链表 三、实验步骤 1.+2.代码:#include #include typedef c
2、har ElemType; 页 20 共 页 2 第 typedef struct ElemType *elem; int length; int listsize; SqList; /定义结构体 void InitList(SqList &L) L.elem=(ElemType*)malloc(10*sizeof(ElemType); L.length=0; L.listsize=10; /初始化 void CreateList(SqList &L,int n) ?牰湩晴尨输入字符串:); 页 20 共 页 3 第 int i=0; for(i;in;i+) scanf(%c,&L.elem
3、i); L.length+; /赋值 void Show(SqList L) int i=0; 牰湩晴尨字符串:); for(i;iL.length;i+) printf(%c,L.elemi); printf(); /显示 int ListInsert(SqList &L, int i, ElemType e) ElemType *p; if (i L.length+1) 页 20 共 页 4 第 ?牰湩晴尨插入位置不合法!n); else ElemType *q = &(L.elemi-1); for (p = &(L.elemL.length-1); p=q; -p) *(p+1) =
4、*p; *q = e; +L.length; /插入 int ListDelete(SqList &L,int i) if(i L.length|i=0) 牰湩晴尨位置不合法n); else int j = i-1; for( j;jL.length;j+) L.elemj = L.elemj+1; 页 20 共 页 5 第 L.length-; / 删除 void Mergelist(SqList La,SqList Lb,SqList &Lc) ElemType *pa,*pb,*pc,*pa_last,*pb_last; pa = La.elem; pb = Lb.elem; pa_la
5、st = pa + La.length - 1; pb_last = pb + Lb.length - 1; Lc.listsize = Lc.length = La.length + Lb.length; pc = Lc.elem = (ElemType *)malloc(Lc.length*sizeof(ElemType); while(pa = pa_last & pb = *pb) *pc+ = *pa+; 页 20 共 页 6 第 else *pc+ = *pb+; while(pa = pa_last) *pc+ = *pa+; while(pb = pb_last) *pc+ =
6、 *pb+; /合并 int main() SqList La; InitList(La); CreateList(La,8); ElemType e; int i; 牰湩晴尨输入插入位置及字符:); scanf(%d %c,&i,&e); ListInsert(La,i,e); Show(La); 页 20 共 页 7 第 printf(); fflush(stdin); SqList Lb; InitList(Lb); CreateList(Lb,8); Show(Lb); 牰湩晴尨输入删除位置:); int j; scanf(%d,&j); ListDelete(Lb,j); Show(
7、Lb); printf(); fflush(stdin); SqList L1,L2,L3; InitList(L1); InitList(L2); CreateList(L1,8); 页 20 共 页 8 第 Show(L1); fflush(stdin); CreateList(L2,6); Show(L2); Mergelist(L1,L2,L3); Show(L3); 3.+4.代码: #include #include 页 20 共 页 9 第 typedef char ElemType; typedef struct LNode char a; ElemType data; str
8、uct LNode *next; LNode,*LinkList;/定义结构体 int count = 0; void Createlist(LinkList &L,int n) 牰湩晴尨输入字符串:); L = ( LinkList )malloc( sizeof(LNode) ); L - next = NULL; int i; LinkList p = ( LinkList)malloc( sizeof(LNode) ); L = p; for( i = 0;i a); q - next = NULL; p - next = q; p = q; count +; /创建链表 void S
9、how(LinkList L) LinkList p = ( LinkList )malloc( sizeof(LNode) ); p = L - next; ); 牰湩晴尨字符串为: while( p ) 页 20 共 页 11 第 printf(%c,p - a); p = p - next; printf(); /输出链表 int ListInsert( LinkList &L,int n,char K) if( L -next = NULL) 牰湩晴尨链表为空!n); return 0; else if(n count + 1) 牰湩晴尨插入位置不合法!n); return 0; 页
10、20 共 页 12 第 else LinkList p = ( LinkList)malloc( sizeof (LNode); if( n = 1) p - a = K; p - next = L - next; L - next = p; else if( n = count + 1) p = L - next; while( p - next ) p = p - next; LinkList q = ( LinkList )malloc( sizeof (LNode); p - next = q; q - a = K; 页 20 共 页 13 第 q - next = NULL; els
11、e int i; p = L; for( i = 1;i next; LinkList q = ( LinkList )malloc( sizeof (LNode); q - a = K; q - next = p - next; p - next = q; count +; 插入 / 页 20 共 页 14 第 int ListDelete( LinkList &L,int n) if( L - next = NULL) 牰湩晴尨链表为空!n); return 0; else if( n count ) 牰湩晴尨删除位置不合法!n); return 0; else LinkList p =
12、( LinkList )malloc( sizeof (LNode); p = L - next; if( n = 1 ) 页 20 共 页 15 第 L - next = p - next; free(p); else int i; for( i = 1;i next; if( n = count ) p - next = NULL; else LinkList q = ( LinkList )malloc( sizeof (LNode); q = p - next; p - next = q - next; free(q); 页 20 共 页 16 第 /删除 void MergeList
13、(LinkList &La, LinkList &Lb, LinkList &Lc) LinkList pa, pb, pc; pa = La-next; pb = Lb-next; Lc = pc = La; while (pa & pb) if (pa-data data) pc-next = pa; pc = pa; = pa pa-next; else pc-next = pb; pc = pb; pb = pb-next; pc-next = pa ? pa : pb; free(Lb); / 合并 页 20 共 页 17 第 int main() LinkList L1; Crea
14、telist(L1,9); Show(L1); char b;int i; 牰湩晴尨输入插入位置和插入元素:); scanf(%d %c,&i,&b); ListInsert(L1,i,b); Show(L1); fflush(stdin); printf(); LinkList L2; Createlist(L2,9); Show(L2); int j; 页 20 共 页 18 第 牰湩晴尨输入删除元素的位置:); scanf(%d,&j); ListDelete(L2,j); Show(L2); fflush(stdin); printf(); LinkList La; 牰湩晴尨输入需合并的两组字符串!n); Createlist(La,4); Show(La); ffl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西南交通大学希望学院《全科医疗中的医患关系与沟通技巧》2023-2024学年第二学期期末试卷
- 蓬溪县2025年数学四下期末监测模拟试题含解析
- 天津滨海汽车工程职业学院《复变函数与常微分方程》2023-2024学年第一学期期末试卷
- 山东省东营市胜利第二中学2024-2025学年高三下学期第一次阶段测试语文试题含解析
- 江苏百校大联考2025年高三下学期起点调研测试英语试题含解析
- 内蒙古自治区鄂尔多斯市2024-2025学年初三下学期1月月考试题化学试题试卷含解析
- 山东省德州市武城县2024-2025学年三年级数学第二学期期末检测试题含解析
- 嵊州市2024-2025学年数学三下期末质量跟踪监视试题含解析
- 辽宁省大连经济技术开发区得胜高级中学2025届高三“零诊”考试生物试题含解析
- 山东交通学院《现代食品微生物学1》2023-2024学年第二学期期末试卷
- 创伤性休克患者的护理
- 初中学业水平考试的“一核二融三层四维”命题理论探析
- 心理咨询记录表10篇
- 数字经济学试题答案
- 创伤急救知识课件
- 专题13 统计与概率-【好题汇编】五年(2020-2024)高考数学真题分类汇编(含答案解析)
- 国家开放大学本科(非英语专业)学士学位英语统一考试样题
- GB/T 44273-2024水力发电工程运行管理规范
- DB65-T 4765-2024 农牧区标准化羊场建设规范
- 城轨行车课程设计
- 2024年南京市中考历史试题及答案
评论
0/150
提交评论