下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上机实验题1.创建一个单链表L (包含头结点),写一算法将其倒置,并将对应 的程序调试运行通过。要求:链表的长度可以由用户自行确定, 不要倒置头结点。#include <stdio.h>#include <stdlib.h>#define OVERFLOW -2#define OK 1typedef int ElemType;typedef int Status;typedef struct LNodeElemType data;struct LNode *next;LNode, *LinkList;Status ReverseLinklist(LinkList &am
2、p;L)/倒置单链表时不倒置头结点LNode *p, *q;p=L->next->next; /*p 指向链表的开始结点之后的结点 */L->next->next=NULL; /将原链表一分为二,一个是用头结点和 /链表的开始结点组成新链表,另外一个是原链表的剩余部分 while (p) q=p; /每次从第二个链表中取出幵始结点,其地址用q纪录p=p->next;q->next二L->next; /将q指向结点插入到新链表的头结点之后 L->next=q;return OK;Status InitLinklist(LinkList &L
3、)/初始化单链表LNode *p=(LinkList)malloc( sizeof(LNode);if (!p) exit(OVERFLOW);L=p;p->next = NULL;/ 生成一个带头结点的空链表return OK;Status CreateLinklist(LinkList &L) /根据用户输入来创建单链表int n;LNode *p, *q;q=L;while (1) printf( "Please enter the next data element of the list: "); scanf("%d" , &am
4、p;n);if (n!= -1) /当用户输入 -1时,停止输入数据元素 p=(LinkList)malloc( sizeof(LNode);if (!p) exit(OVERFLOW);p->data = n;p->next=NULL;q->next=p;q=p;elsebreak;return OK;Status PrintLinklist(LinkList L) LNode *p;p=L->next;if (p=NULL)printf( "This list is empty." );elsewhile (p!=NULL) printf( &q
5、uot;%d", p->data);p=p->next; return OK;Status main() LinkList L;InitLinklist(L);/初始化单链表CreateLinklist(L);/ 创建单链表printf( "Before link reversing.n" );PrintLinklist(L);/打印单链表ReverseLinklist(L);/ 对单链表进行逆置printf( "nAfter link reversing.n" );PrintLinklist(L); / 打印逆置后的单链表getc
6、har();/ 此句和下句仅为检验结果输出而加getchar();return OK;2.已知线性表C= ai, bi, a2, b2,,an, bn,采用单链表L (包含头结点)存放,写一算法将其拆分成两个线性表(分别用带头结点的单链表存放),使得:A=a 1, a2,an,B=bi,b2,bn并将对应的程序调试运行通过。#include <stdio.h>#include <stdlib.h> #define OVERFLOW -2#define OK 1 typedef int ElemType; typedef int Status;typedef struct
7、 LNodeElemType data; struct LNode *next; LNode, *LinkList;Status InitLinklist(LinkList &L)/初始化单链表LNode *p=(LinkList)malloc( sizeof(LNode); if (!p) exit(OVERFLOW);L=p;p->next = NULL;/ 生成一个带头结点的空链表return OK;Status CreateLinklist(LinkList &L) /根据用户输入来创建单链表int n;LNode *p, *q;q=L;while (1) pri
8、ntf( "Please enter the next data element of the list: "); scanf("%d" , &n);if (n!= -1) /当用户输入 -1时,停止输入数据元素 p=(LinkList)malloc( sizeof(LNode);if (!p) exit(OVERFLOW); p->data = n; p->next=NULL; q->next=p; q=p;elsebreak;return OK;Status PrintLinklist(LinkList L) LNode *
9、p;p=L->next;if (p=NULL)printf( "This list is empty." );elsewhile (p!=NULL) printf( "%d ", p->data); p=p->next;return OK;Status SplitLinklist(LinkList &L, LinkList &La, LinkList &Lb) LinkList pa = La, pb = Lb, p = L->next; /pa指向 La中的最后一个结点 ,p 指向L中的第一个结点int
10、counter = 1;/计数器,奇数位上结点加入La,偶数位上结点加入Lbwhile (p)/线性表非空L->next = p->next;/将当前结点从L中摘下来p->next = NULL;此结点将成为La或Lb中的最后一个结点if (counter % 2) = 1) / 将此结点加入 Lapa->next=p; pa=pa->next;/ counter%2 = 0, 将此结点加入 Lbelse pb->next=p;pb=pb->next;p=L->next;counter+;return OK;Status main() LinkList L, La, Lb;InitLinklist(L);InitLinklist(La);InitLinklist(Lb);CreateLinklist(L);printf( "The original linklist :" );PrintLinklist(L);printf( "is to be split into two.n" );SplitLinklist(L, L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024城市基础设施建设项目业主方与施工方之间的施工合同
- 2024年教育资源共享与许可合同
- 2024年房产购买合同样本
- 厨师个人工作计划书5篇范文
- 2023年高考押题预测卷02(上海卷)-语文(考试版)A4
- DB4106T 115-2023 芦笋病虫害防控技术规程
- 2024年房屋析产合同
- DB4106T 25-2020 病死畜禽肉鉴别技术规范
- 2024年技术开发合同:双方在技术研发过程中的责任、权益和保密条款
- 关于读书计划集合(12篇)
- 2023年天津公务员已出天津公务员考试真题
- 2025年高考数学专项题型点拨训练之初等数论
- 上海市浦东新区2024-2025学年六年级上学期11月期中数学试题(无答案)
- 教科版三年级科学上册《第1单元第1课时 水到哪里去了》教学课件
- 通信技术工程师招聘笔试题与参考答案(某世界500强集团)2024年
- 国际贸易术语2020
- 国网新安规培训考试题及答案
- 2024至2030年中国节流孔板组数据监测研究报告
- 黑龙江省哈尔滨市师大附中2024-2025学年高一上学期10月阶段性考试英语试题含答案
- 第六单元测试卷-2024-2025学年统编版语文三年级上册
- 【课件】Unit4+Section+B+(Project)课件人教版(2024)七年级英语上册
评论
0/150
提交评论