全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

数据结构 双向链表的创建和读取详解及实例代码

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

双向链表是为了满足更加方便的查找前驱,而付出空间的代价的一个数据结构。双向链表的节点定义如下:

 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小时内与您取得联系。