该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

接着是三张链表的定义:

/**

* 延时链表

*

*/

#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三个链表的相互操作?相关推荐

  1. C语言:编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。)

    C语言:编写代码实现,模拟用户登录情景,并且只能登录三次.(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序.) #include<stdio.h> #incl ...

  2. C语言 在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。

    C语言 在海军节开幕式上,有A.B.C三艘军舰要同时开始鸣放礼炮各21响. 在海军节开幕式上,有A.B.C三艘军舰要同时开始鸣放礼炮各21响.已知A舰每隔5秒放1次,B舰每隔6秒放1次,C舰每隔7秒放 ...

  3. 单片机DPTR(DPH,DPL)和SP特殊寄存器C语言中应用?这三个特殊寄存器对C程序员来说是透明的,不用C程序员操作,编译的时候会自动运用这三个寄存器ACC寄存器和B寄存器也类似

    单片机DPTR(DPH,DPL)和SP特殊寄存器C语言中应用?这三个特殊寄存器对C程序员来说是透明的,不用C程序员操作,编译的时候会自动运用这三个寄存器,ACC寄存器和B寄存器也类似 编译器把C译成指 ...

  4. C语言编程>第二周 ⑧ 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x……

    例题:两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比,请编程序找出. 代码如下: /*程序 ...

  5. c语言求圆锥的表面积和体积_新人教版六年级下册第三单元《圆柱和圆锥》知识整理...

    同学们,第三单元知识我们已经通过网课学完了,今天我们一起来对第三单元的知识进行整理.我们先来回顾第三单元所学知识,来个框架,也就是提纲. 圆柱与圆锥思维导图: 单元知识点整理: 一.<圆柱和圆锥 ...

  6. C语言学习之编写一个C程序,运行时输人abc三个值,输出其中值最大者。

    编写一个C程序,运行时输人abc三个值,输出其中值最大者. #include <stdio.h> void main(){int a,b,c,max;printf("请输入三个数 ...

  7. 判断两个链表是否相交,若相交,求交点。(假设链表可能带环)【升级版】(C语言)

    int IsListCroseWithCycle(PSListNode pL1, PSListNode pL2) {PSListNode pMeetNode1 = HasCycle(pL1);PSLi ...

  8. C语言编写程序,输入三角形的三条边长,求三角形的面积。设输入的三条边长a、b、c能构成三角形。

    编写程序,输入三角形的三条边长,求三角形的面积.设输入的三条边长a.b.c能构成三角形. #include<stdio.h> #include<math.h> void mai ...

  9. 链表node中保存的是什么_Redis源码解析一 --链表结构

    Redis源码剖析-链表结构 1. redis中的链表 在redis中链表的应用非常广泛,例如列表键的底层实现之一就是链表.而且,在redis中的链表结构被实现成为双向链表,因此,在头部和尾部进行的操 ...

最新文章

  1. PyCharm安装mysqlclient一直提示MS Visual C++ 14 required
  2. JavaScript深拷贝—我遇到的应用场景
  3. 01_基于应用拆分的技术架构
  4. Node中使用mysql模块遇到的问题
  5. 前台分页,感觉一般还能优化
  6. python可以实现操作系统管理_Python并发编程 —— 操作系统基础
  7. C++设计模式-开放-封闭原则基本概念与实例
  8. C语言(记录)——内存相关_2:内存的编址与管理
  9. Mysql学习总结(30)——MySQL 索引详解大全
  10. 高斯烟羽模型matlab程序,高斯烟羽模型的改进及在危化品泄漏事故模拟中的应用...
  11. mysql字段描述_详细的MySQL字段类型描述
  12. 像“钢铁侠”埃隆·马斯克那样,成为超速学习者
  13. Ansys/Abaqus/nbsp;热应力分析.20…
  14. MySQL(三) 完整性约束
  15. 23种设计模式之单例模式、工厂模式、原型模式、建造者模式
  16. jqGrid参数整理
  17. 永中科技为何丢失“核高基”资格
  18. 【Algorithm · fourth edition】均值、方差的递推公式
  19. 【论文阅读】Attention Based Spatial-Temporal GCN...Traffic Flow Forecasting[基于注意力的时空图卷积网络交通流预测](1)
  20. ARCGIS常见拓扑错误的修改方法

热门文章

  1. C++之sizeof(vector)
  2. FFmpeg之wav转mp3(二十四)
  3. Fuchsia中GN与Ninja构建demo
  4. Clojure 学习入门(10)- httpkit
  5. Android Sensor架构和原理分析
  6. VTDecompressionSessionDecodeFrame -8969
  7. 主流硬盘接口有哪些?
  8. diff命令两个服务器文件,LINUX命令diff-文件管理-比较给定的两个文件的不同
  9. 进阶15 IO流+字节字符输入输出+IO异常处理+属性集+缓冲流+各种编码+序列化
  10. 如何强制修改vivado工程打开版本