双向循环链表的创建,插入,读取,与删除操作

今天我学习了双向循环链表,不过与以往的不同,这次的双向循环链表 有坑,是巨坑… 我以为写的会很顺利 没想到 我竟然踩了“雷”…
好尴尬哦,下面我们来学习这个 双向循环链表把~
对了,说一下为什么需要双向循环链表把,如果一个链表是单向的,那么,如果在读取过程中,要读取已读取数据的前一个 或者前面几个数据怎么办呢? 比如 1–>2–>3–>4–>5 如果是循环链表的话,我读到了4 然后要我读3 ,怎么办呢?那么如果是单向的话,我还要走–>5
–>1–>2–>3 如果这个链表很长很长呢? 是不是要花费很多的时间呢……? 但是,如果我这个链表是双向的话,我只要做一步,就可以找到3 ,就是 直接用4的前驱结点找到3 的节点位置,这就省下了不少时间,但同时也会花费空间对吧,这就是我们的 空间换取时间啦~
废话不多说,我们代码里一探究竟

#include<stdio.h>
#include<stdlib.h>
#define len sizeof(list)
struct list 
{
   int data ;
struct list *prior;//前驱结点
struct list *next; //后驱结点
};
list *head,*s,*p,*end; int n=0;

void create( int n)
{
    head=s=(list *)malloc(len);

	int i =0;
  while(i<n)
  {
    
	p=(list *)malloc(len);
	s->data=i+1; //用递增的数字给data赋值,方便后面验证 双向表是否 创建成功
	s->next=p; 
	 p->prior=s;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是牛大春呀

老板糊涂啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值