单链表和双向链表

单链表和双向链表

链表和数组的优缺点

 **数组:**
 优点:可以通过数组索引很快地访问数据元素,可以通过数组下标随机访问
 缺点:删除和插入元素比较麻烦
 **链表:**
 优点:删除和插入元素方便快捷
 缺点:只能够顺序访问,不能够随机访问

 所以在需要可以随机访问元素的时候选择数组,而在需要经常删除和插入操作的时候
 使用链表。另外数据存放数据时需要知道元素的个数,但是链表能够动态进行存储分
 配。

单向链表和双向链表的结构

单向链表

typedef struct single 
{
  int data;
  struct single *next;
}

双向链表

typedef struct double
{
  int data;
  struct double *front;//前驱指针
  struct double *next;//后驱指针
}

单向链表操作(插入元素)//以后再添加删除操作

下面我将用图、文字和代码一起解释单向链表的插入元素操作(暂时只解释了在中间插入
元素操作,在末尾和开头插入元素也类似),因为用笔画比较快就用笔画了图,请勿介意。

原本的链表如下图所示,我们需要做的就是在这两个元素间插入一个元素。

在这里插入图片描述
相关代码:

head->next=NEXT;

在插入元素后的图片

在这里插入图片描述
如图所示,插入元素需要做的就是将head->next指针释放出来,再将它指向新元素,新元素New->next指针指向NEXT。

插入元素后的代码

New->next=NEXT;
head->next=New;

双向链表操作(插入元素)//以后再添加删除操作

下面将用图片、文字以及代码解释双向链表的插入元素操作

下图是未插入元素前的图片,我们需要做的就是在这两个元素间插入一个元素。
在这里插入图片描述
此时的相关代码:

head->next=NEXT;
NEXT->pre=head;

下图所示为插入元素后的图片
在这里插入图片描述
插入元素就是前一个元素的后驱指针head->next指向新元素,新元素的后驱指针New->next指向后一个元素,后一个的前驱指针NEXT->pre指向新元素,新元素的前驱指针New->pre指向前一个元素。

插入元素后的代码

head->next=New;
New->next=NEXT;
NEXT->pre=New;
New->pre=head;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值