C语言如何实现双向链表和双向循环链表
发表于:2024-10-01 作者:千家信息网编辑
千家信息网最后更新 2024年10月01日,本文小编为大家详细介绍"C语言如何实现双向链表和双向循环链表",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言如何实现双向链表和双向循环链表"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一
千家信息网最后更新 2024年10月01日C语言如何实现双向链表和双向循环链表
本文小编为大家详细介绍"C语言如何实现双向链表和双向循环链表",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言如何实现双向链表和双向循环链表"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
双向链表和双向循环链表
和单向链表相比,多了一个前驱结点。如果他为空,那么next和prior都指向自己。而对于双循环链表,只需要最后一个元素的next指向head->next,head->next的prior指向最后一个节点即可。
插入操作
新节点s插入链表,s->next给p结点,s->prior给p->prior,然后,p->prior->next指向s,p->prior再指向s。顺序需要注意
s->next = p;s->prior = p->prior;p->prior->next = s;p->prior = s;
删除操作
删除结点p。p->next->prior 指向 p->prior,p->prior->next 指向 p->next 。最后将p结点delete。
p->prior->next = p->next;p->next->prior = p->prior;delete p;
实例操作
(附截图)
注意:因为函数没有返回Node*类型,所以这里对指针进行引用,否则在退出函数的时候,并没有保存改变。如果需要删除全部链表,需要保存InitList之后的head地址,否则会遗漏一个Node结点没有删除。
代码实现:
#include#include #include using namespace std;const int OK = 1;const int ERROR = 0;const int LETTERNUM = 26;typedef char ElemType;struct Node{ ElemType data; Node * prior;//前驱结点 Node * next;//后驱结点 };int InitList(Node *&L){ Node *p,*q; int i; L = new Node; //头结点 L->next = L->prior = NULL; p = L; //p是当前指针 for(int i=0;i data = 'A' + i; q->prior = p; q->next = p->next; p->next = q; p = q;//指针移动 } p->next = L->next; //尾结点指向head->next(第一个有字母的地址) L->next->prior = p; return OK;}void Change(Node *&L,int i){ //移动头指针 if (i>0){ while(i--){ L = L->next; } } else if (i<0){ L = L->next ; while(i++){ L = L->prior; } } else{ L = L->next; }}int main(){ Node *head = NULL; int i,n; InitList(head); //Node *s_head = head; // 保存头结点之后删除 cout<<"输入位置:"< >n; Change(head,n); for(i = 0;i next; cout< data<<" "; } cout< 读到这里,这篇"C语言如何实现双向链表和双向循环链表"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
结点
双向
指向
环链
指针
语言
文章
内容
函数
前驱
地址
节点
移动
妥当
代码
位置
元素
单向
双循环
字母
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络服务器所在地对营业地
中岛北斗互联网科技
数据库种类大全
新华互联网科技怎么样
银行网络安全员是做什么的
汤姆 ims等数据库
要怎么学习网络技术
局域网共用一个数据库怎么用
软件开发的产品毛利怎么算
怎样在数据库里面新建数据库
群发软件开发免费最新版
vintage数据库
无后端数据库的RFID
实现web服务器
db2 选择数据库
HP服务器显卡驱动怎么装
崩坏3所用服务器
会英语和软件开发
手机app软件开发类
能不能改支付宝的数据库
电脑端谷歌服务器是什么
cp管理服务器
vin校验码数据库
阿里云轻量服务器站群ip
嵌入式软件开发区烧烤图片
网络安全法非法经营
网络安全现状与存在哪些问题
万方数据库如何统计字数
华为云服务器操作系统怎么选
爬虫学校学生数据库