数据结构 双向链表的创建和读取

双向链表是为了满足更加方便的查找前驱,而付出空间的代价的一个数据结构。双向链表的节点定义如下:
typedef struct node
{
int x;
struct node *prior,*next;
}DLNode;
双向链表的空间结构如下图所示:
双向链表的创建如下:
//创建双向链表
DLNode *create_DList()
{
DLNode *p,*h,*l;
int n,i,x;
h = (DLNode *)malloc(sizeof(DLNode));
h->prior = h; //当空的双向链表就像上图那样前驱和后驱都会指向自己;
h->next = h;
p = h;
printf("请输入需要创建双向链表的长度:");
scanf("%d",&n);
for(i = 0; i < n; i++)
{
printf("请输入第%d个数",i+1);
scanf("%d",&x);
l = (DLNode *)malloc(sizeof(DLNode));
l->x = x;
p->next = l;
l->prior = p;
l->next = h; //注意,l->next链接的是头节点,
h->prior = l; //而头结点的前驱是l。 这样便构成了一个循环的双向链表
p = l;
}
return(h); //不要忘记返回链表
}
上面绿颜色的字需要注意;
读取双向链表的代码如下:
void out_DList(DLNode *l)
{
DLNode *p;
int i;
p = l;
p = p->next;
while(p!=l) //注意条件发生了变化
{
printf("%5d",p->x);
p = p->next; //不要忘记让p指向下一个节点;
}
}
注意:①:由于头节点的值为空,所以p = p->next; ②:循环的条件发生了变化,因为这是一个循环链表,链表的尾部指向头部,所以条件是p!=l;
全部代码如下:
#include<stdio.h>
#include <stdlib.h>
typedef struct node
{
int x;
struct node *prior,*next;
}DLNode;
//函数声明
DLNode *create_DList();
void out_DList(DLNode *l);
main()
{
DLNode *l;
l = create_DList();
printf("创建成功!");
out_DList(l);
}
//读取双向链表
void out_DList(DLNode *l)
{
DLNode *p;
int i;
p = l;
p = p->next;
while(p!=l)
{
printf("%5d",p->x);
p = p->next;
}
}
//创建双向链表
DLNode *create_DList()
{
DLNode *p,*h,*l;
int n,i,x;
h = (DLNode *)malloc(sizeof(DLNode));
h->prior = h;
h->next = h;
p = h;
printf("请输入需要创建双向链表的长度:");
scanf("%d",&n);
for(i = 0; i < n; i++)
{
printf("请输入第%d个数",i+1);
scanf("%d",&x);
l = (DLNode *)malloc(sizeof(DLNode));
l->x = x;
p->next = l;
l->prior = p;
l->next = h;
h->prior = l;
p = l;
}
return(h);
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# 数据结构
# 双向链表
# 双向链表结构
# C语言 数据结构双向链表简单实例
# C#数据结构之双向链表(DbLinkList)实例详解
# java数据结构之实现双向链表的示例
# C#数据结构与算法揭秘四 双向链表
# C语言实现数据结构和双向链表操作
# 链表
# 请输入
# 不要忘记
# 的是
# 发生了
# 就像
# 这是一个
# 希望能
# 当空
# 所示
# 谢谢大家
# 需要注意
# 值为
# 如下图
# 上图
# 是为了
# 构成了
# pre
# DLNode
相关文章:
独立制作一个网站多少钱,建立网站需要花多少钱?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
如何用已有域名快速搭建网站?
,交易猫的商品怎么发布到网站上去?
如何用AWS免费套餐快速搭建高效网站?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何高效搭建专业期货交易平台网站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
建站主机服务器选购指南:轻量应用与VPS配置解析
如何有效防御Web建站篡改攻击?
如何在IIS7上新建站点并设置安全权限?
建站之星×万网:智能建站系统+自助建站平台一键生成
如何选择域名并搭建高效网站?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
微信小程序 input输入框控件详解及实例(多种示例)
学校免费自助建站系统:智能生成+拖拽设计+多端适配
建站之星如何配置系统实现高效建站?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
c# 服务器GC和工作站GC的区别和设置
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
为什么Go需要go mod文件_Go go mod文件作用说明
h5网站制作工具有哪些,h5页面制作工具有哪些?
企业网站制作公司网页,推荐几家专业的天津网站制作公司?
如何挑选优质建站一级代理提升网站排名?
css网站制作参考文献有哪些,易聊怎么注册?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
如何快速建站并高效导出源代码?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
北京网站制作公司哪家好一点,北京租房网站有哪些?
如何撰写建站申请书?关键要点有哪些?
建站上传速度慢?如何优化加速网站加载效率?
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
制作网站的软件免费下载,免费制作app哪个平台好?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何快速配置高效服务器建站软件?
如何在橙子建站中快速调整背景颜色?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何在阿里云高效完成企业建站全流程?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
如何通过虚拟主机快速完成网站搭建?
建站主机核心功能解析:服务器选择与网站搭建流程指南
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
如何做网站制作流程,*游戏网站怎么搭建?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
Bpmn 2.0的XML文件怎么画流程图
*请认真填写需求信息,我们会在24小时内与您取得联系。