C语言三个链表的关联,有能者相互切磋---怎样实现ABC三个链表的相互操作?
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
接着是三张链表的定义:
/**
* 延时链表
*
*/
#include
#include"DoubleList.h"
//#include "WaitingList.h"
#include
//创建双向链表
void CreatDoubleLinkList(int headNum);
void CreatWaitingList(int headNum);
//创建节点
void CreatNewDot(PDB *newDot,int nTCnt);
//查找
PDB SearchDot(int nTCnt);
//插入
void InsertDot(PDB dot,int AfterNum);
//删除
void DeleteDot(int nTCnt);
//修改
void UpdateDot(int originNum,int changeNum);
//输出打印信息
void printInfo();
int inputNum=0;
int chanNum=0;
int order=-1;
int main()
{
do
{
printf("***********************命令菜单***************************\n");
printf("*** ***\n");
printf("***********************1:创建延时链表头节点***************\n");
printf("*** ***\n");
printf("***********************2:创建新节点***********************\n");
printf("*** ***\n");
printf("***********************3:修改节点值***********************\n");
printf("*** ***\n");
printf("***********************4:删除节点*************************\n");
printf("*** ***\n");
printf("***********************5:打印现在列表的值*****************\n");
printf("*** ***\n");
printf("***********************6:退出程序*************************\n");
printf("请输入命令:\n");
scanf("%d",&order);
switch(order)
{
case 1:
printf("请输入头结点的值:\n");
scanf("%d",&inputNum);
CreatDoubleLinkList(inputNum);
break;
case 2:
printf("请输入新结点的值:\n");
scanf("%d",&inputNum);
CreatNewDot(&newDot,inputNum);
printf("请输入你要插在那个节点之后:\n");
scanf("%d",&inputNum);
InsertDot(newDot,inputNum);
break;
case 3:
printf("请输入要修改的节点的原来的值:\n");
scanf("%d",&inputNum);
printf("请输入要修改后值:\n");
scanf("%d",&chanNum);
UpdateDot(inputNum,chanNum);
break;
case 4:
printf("输入要删除的节点的值:\n");
scanf("%d",&inputNum);
DeleteDot(inputNum);
break;
case 5:
printInfo();
break;
case 6:
exit(0);
default:
break;
}
}while(order!=6);
return 0;
}
//创建延时双向链表
void CreatDoubleLinkList(int headNum)
{
Head=(PDB)malloc(LEN);
Head->nTCnt=headNum;
Head->next=Head->previous=Head;
printf("双向链表的头结点已经创建,值为:%d\n",Head->nTCnt);
}
//创建阻塞双向链表
//CreatWaitingList(int headNum)
//{
//Head=(PTCB)malloc(LEN);
// Head->DeadLine=headNum;
// Head->next=Head->previous=Head;
// printf("双向链表的头结点已经创建,值为:%d\n",Head->DeadLine);
//}
//创建节点
void CreatNewDot(PDB *newDot,int number)
{
(*newDot)=(PDB)malloc(LEN);
(*newDot)->nTCnt=number;
}
//打印信息
void printInfo()
{
if(Head==NULL)
{
printf("链表为空!\n");
return ;
}
PDB pOut=Head;
printf("链表值为:\n");
do{
printf("%d\n",pOut->nTCnt);
pOut=pOut->next;
}while(pOut->next!=Head->next);
}
//查找信息
PDB SearchDot(int num)
{
if(Head==NULL)
{
printf("链表为空,没有可以删除的节点!\n");
return NULL;
}
else if(Head->nTCnt==num)
{
return Head;
}
else
{
PDB search=Head->next;
while(search->nTCnt!=num&&search!=Head)
{
search=search->next;
}
if(search==Head)
return NULL;
else
return search;
}
return NULL;
}
//插入节点
void InsertDot(PDB dot,int AfterNum)
{
if(dot==NULL)
return ;
else
{
PDB AfterDot=SearchDot(AfterNum);
dot->previous=AfterDot;
dot->next=AfterDot->next;
AfterDot->next->previous=dot;
AfterDot->next=dot;
}
printf("数据插入成功!\n");
}
//删除节点
void DeleteDot(int num)
{
PDB delDot=SearchDot(num);
if(delDot==NULL)
{
printf("节点不存!\n");
return ;
}
delDot->previous->next=delDot->next;
delDot->next->previous=delDot->previous;
free(delDot);
printf("节点删除成功!\n");
}
//修改节点
void UpdateDot(int originNum,int changeNum)
{
PDB chanDot=SearchDot(originNum);
if(chanDot==NULL)
{
printf("不存在节点值为:%d 的节点!\n",originNum);
return ;
}
else
{
chanDot->nTCnt=changeNum;
printf("节点值更改成功!\n");
}
}
C语言三个链表的关联,有能者相互切磋---怎样实现ABC三个链表的相互操作?相关推荐
- C语言:编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。)
C语言:编写代码实现,模拟用户登录情景,并且只能登录三次.(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序.) #include<stdio.h> #incl ...
- C语言 在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。
C语言 在海军节开幕式上,有A.B.C三艘军舰要同时开始鸣放礼炮各21响. 在海军节开幕式上,有A.B.C三艘军舰要同时开始鸣放礼炮各21响.已知A舰每隔5秒放1次,B舰每隔6秒放1次,C舰每隔7秒放 ...
- 单片机DPTR(DPH,DPL)和SP特殊寄存器C语言中应用?这三个特殊寄存器对C程序员来说是透明的,不用C程序员操作,编译的时候会自动运用这三个寄存器ACC寄存器和B寄存器也类似
单片机DPTR(DPH,DPL)和SP特殊寄存器C语言中应用?这三个特殊寄存器对C程序员来说是透明的,不用C程序员操作,编译的时候会自动运用这三个寄存器,ACC寄存器和B寄存器也类似 编译器把C译成指 ...
- C语言编程>第二周 ⑧ 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x……
例题:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比,请编程序找出. 代码如下: /*程序 ...
- c语言求圆锥的表面积和体积_新人教版六年级下册第三单元《圆柱和圆锥》知识整理...
同学们,第三单元知识我们已经通过网课学完了,今天我们一起来对第三单元的知识进行整理.我们先来回顾第三单元所学知识,来个框架,也就是提纲. 圆柱与圆锥思维导图: 单元知识点整理: 一.<圆柱和圆锥 ...
- C语言学习之编写一个C程序,运行时输人abc三个值,输出其中值最大者。
编写一个C程序,运行时输人abc三个值,输出其中值最大者. #include <stdio.h> void main(){int a,b,c,max;printf("请输入三个数 ...
- 判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】(C语言)
int IsListCroseWithCycle(PSListNode pL1, PSListNode pL2) {PSListNode pMeetNode1 = HasCycle(pL1);PSLi ...
- C语言编写程序,输入三角形的三条边长,求三角形的面积。设输入的三条边长a、b、c能构成三角形。
编写程序,输入三角形的三条边长,求三角形的面积.设输入的三条边长a.b.c能构成三角形. #include<stdio.h> #include<math.h> void mai ...
- 链表node中保存的是什么_Redis源码解析一 --链表结构
Redis源码剖析-链表结构 1. redis中的链表 在redis中链表的应用非常广泛,例如列表键的底层实现之一就是链表.而且,在redis中的链表结构被实现成为双向链表,因此,在头部和尾部进行的操 ...
最新文章
- PyCharm安装mysqlclient一直提示MS Visual C++ 14 required
- JavaScript深拷贝—我遇到的应用场景
- 01_基于应用拆分的技术架构
- Node中使用mysql模块遇到的问题
- 前台分页,感觉一般还能优化
- python可以实现操作系统管理_Python并发编程 —— 操作系统基础
- C++设计模式-开放-封闭原则基本概念与实例
- C语言(记录)——内存相关_2:内存的编址与管理
- Mysql学习总结(30)——MySQL 索引详解大全
- 高斯烟羽模型matlab程序,高斯烟羽模型的改进及在危化品泄漏事故模拟中的应用...
- mysql字段描述_详细的MySQL字段类型描述
- 像“钢铁侠”埃隆·马斯克那样,成为超速学习者
- Ansys/Abaqus/nbsp;热应力分析.20…
- MySQL(三) 完整性约束
- 23种设计模式之单例模式、工厂模式、原型模式、建造者模式
- jqGrid参数整理
- 永中科技为何丢失“核高基”资格
- 【Algorithm · fourth edition】均值、方差的递推公式
- 【论文阅读】Attention Based Spatial-Temporal GCN...Traffic Flow Forecasting[基于注意力的时空图卷积网络交通流预测](1)
- ARCGIS常见拓扑错误的修改方法
热门文章
- C++之sizeof(vector)
- FFmpeg之wav转mp3(二十四)
- Fuchsia中GN与Ninja构建demo
- Clojure 学习入门(10)- httpkit
- Android Sensor架构和原理分析
- VTDecompressionSessionDecodeFrame -8969
- 主流硬盘接口有哪些?
- diff命令两个服务器文件,LINUX命令diff-文件管理-比较给定的两个文件的不同
- 进阶15 IO流+字节字符输入输出+IO异常处理+属性集+缓冲流+各种编码+序列化
- 如何强制修改vivado工程打开版本