实验二线性表的链式存储结构
实验二线性表的链式存储结构
1.(必做题) 设计并验证以下算法:带头结点单向循环链表L中的数据元素为整数且非递增有序,删除L中所有值大于mink且小于maxk的元素(若表中存在这样的元素),并将删除后链表L分解成两个带头结点单向循环链表L1、L2,使两个链表中各自仅含奇数或偶数。
(1) 根据键盘输入数据用头插法建立带头结点单向循环链表L。
(2) 利用原带头结点单向循环链表L的结点空间构成链表L1、L2。
(3) 输出带头结点单向循环链表L、删除后的链表L、拆分后的带头结点单向循环链表L1、L2。
#include<stdio.h>
#include<stdlib.h>
typedef int ElemType;typedef struct LNode{ElemType data;struct LNode *next;
}LNode,*LinkList; LNode *head,*rear; //声明一个表头和尾指针
void output(LNode *L);LNode *creatlist(int n)
{LNode *s,*L;int a; L = (LNode * )malloc(sizeof(LNode));rear = L;head = L;L->next = rear; //置为空的循环单链表for(int i = 0; i < n; i++){scanf("%d",&a);s = (LNode * )malloc(sizeof(LNode));s->data = a;s->next = L->next;L->next = s; }return head;
} void Delete_Between(LNode *L,int mink,int maxk)
{LNode *p,*q;p=L;while(p->next->data <= mink)p=p->next;if(p->next){q=p->next;while(q->data <maxk){p->next =q->next;free(q);q=p->next;}}
}void Divide_LinkedPoly(LNode *L,LNode *L1,LNode *L2)
{LNode *p,*pa,*pb;L1 = L;L2 = (LinkList)malloc(sizeof(LNode));p = L->next;pa =L1;pb =L2; while(p!=L){if(p->data%2!=0)//如果是奇数 {pa->next = p;pa = p;}else{pb->next = p;pb = p;}p = p->next;} pa->next = L1;pb->next = L2;printf("奇数列表:") ; output(L1); //输出奇数集合 printf("偶数列表:") ;output(L2); //输出偶数集合 }void output(LNode *L)
{LNode *p = L;while(p->next!=L) //输出删除后的链表L{p=p->next;printf("%d ",p->data);}printf("\n");} int main()
{LinkList L,L1,L2;int mink,maxk,i;printf("请输入元素个数:"); scanf("%d",&i);printf("请输入元素,每个元素间用空格隔开\n"); head=creatlist(i); //创建链表并输入值 printf("请输入mink,maxk\n"); scanf("%d %d",&mink,&maxk); //输入mink,maxk printf("删除前:"); output(head); //输出带头结点单向循环链表Lprintf("删除后:"); Delete_Between(head,mink,maxk); //删除L中所有值大于mink且小于maxk的元素output(head); //输出删除后的链表LDivide_LinkedPoly(head,L1,L2); //拆分后的带头结点单向循环链表L1、L2。并输出L1,L2 }
实验二线性表的链式存储结构相关推荐
- 从零开始学数据结构和算法(二)线性表的链式存储结构
链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...
- 线性表(链式存储结构)
前言 线性表(顺序存储结构-用数组描述) 为了解决顺序存储不足:用线性表另外一种结构-链式存储.在顺序存储结构(数组描述)中,元素的地址是由数学公式决定的,而在链式储存结构中,元素的地址是随机分布的, ...
- 《数据结构》c语言版学习笔记——其他链表(线性表的链式存储结构Part2)
线性表的链式存储结构 数据结构系列文章 第三章 循环链表.双向链表 文章目录 线性表的链式存储结构 前言 一.循环链表 (一)定义 (二)尾指针 二.双向链表 (一)定义 (二)代码 总结 前言 提示 ...
- 《数据结构》c语言版学习笔记——单链表结构(线性表的链式存储结构Part1)
线性表的链式存储结构 数据结构系列文章 第二章 单链表结构 文章目录 线性表的链式存储结构 前言 一.单链表的建立 代码 二.单链表的读取 代码 三.单链表的插入 代码 四.单链表的删除 代码 五.单 ...
- 线性表(链式存储结构)C语言
文章目录 一.线性表的链式存储结构 二.代码 1.头文件与宏定义: 2.对链表的定义及主要使用函数: 3.测试函数(主函数): 三.运行结果 一.线性表的链式存储结构 线性表的链式存储结构的特点是用一 ...
- 【数据结构】CH2 线性表的链式存储结构
目录 一.链表概述 1.相关定义 二.单链表 1.插入和删除节点的操作 (1)插入结点 (2)删除结点 2.建立单链表 (1)头插法 (2)尾插法 3.线性表基本运算在单链表中的实现 (1)初始化线性 ...
- 这一篇让你弄懂线性表的链式存储结构
线性表的链式存储结构以及单链表概念 本篇内容是线性表链式存储结构的相关概念 这里有几篇线性表的干货供大家讨论学习: 这里是吐血总结的线性表顺序存储结构 这里是单链表的各种操作,超详细~ 双向链表.循环 ...
- 数据结构和算法:(3)3.2线性表的链式存储结构
线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素也就是说你这个可以放在A地点,这个可以放在E地点,A地点和E地点中间可以隔开一个C地点和D地点,这样是允许的),这组存储单元可以存在 ...
- 链表list(链式存储结构实现)_5 线性表的链式存储结构
系列文章参考资料为<大话数据结构>,源码为个人私有,未经允许不得转载 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,可以使连续的,也可以不连续,也就意味这些元素可以 ...
- 数据结构开发(5):线性表的链式存储结构
0.目录 1.线性表的链式存储结构 2.单链表的具体实现 3.顺序表和单链表的对比分析 4.小结 1.线性表的链式存储结构 顺序存储结构线性表的最大问题是: 插入和删除需要移动大量的元素!如何解决? ...
最新文章
- 单台mysql增加节点_如何在一台服务器上安装两个PXC集群节点
- tyvj 1067 合唱队形 dp LIS
- 闲谈.NET中的类型和访问修饰符
- AmazonSQS和Spring用于消息传递队列
- Visual Studio Code 快捷键的设置
- Java里a和b哪个大_Java中 a+=b和a=a+b有什么区别?
- MYSQL主从同步(Windows到Windows)
- 【计算机网络】网络协议与计算机网络体系结构(OSI参考模型、TCP/IP体系、网络通信标准化组织)及 Java网络编程
- UVa 10066 - The Twin Towers(LCS水题)
- IOS开发之异步加载网络图片并缓存本地实现瀑布流(一)
- 不同vlan之间如何ping通_如何利用交换机实现不同VLAN、不同网段之间互访?
- win10系统下第三方软件字体大小调整
- CDA第九届认证考试数据报告重磅发布!
- php重置按钮,input 标签中 reset 重置按钮点击后表单不能清空的原因
- postman——集合——执行集合——脚本的执行顺序——验证
- JVM(4)-MAT: 支配树 Dominator Tree
- 全网最详细charles抓包工具详细教程,实战教程(细致)
- 1000句英语经典口语 (1)
- sqlite3错误原因
- C小程PTA错题集1
热门文章
- 蓝宝石rx580怎么超频_【蓝宝石 RX580 8G D5 超白金 OC 显卡使用总结】游戏|界面|按钮|频率_摘要频道_什么值得买...
- 单点登录系统设计分析
- 深度残差网络_深度残差收缩网络:借助注意力机制实现特征的软阈值化
- social-share,社会化分享组件之jquery版
- JavaScript:点击按钮打开/关闭网页
- 【知识分享】Batch(批处理)-学生管理系统可视化界面的应用
- win10激活时间(win10激活时间查询)
- YbSoftwareFactory 代码生成插件【二十三】:集成强大的公文流转系统
- pyltp python具体使用
- HPSocket C++控制台版DEMO