双链表与单链表的比较

Posted zoutingrong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双链表与单链表的比较相关的知识,希望对你有一定的参考价值。

  双链表在一定程度上就是单链表的的基础上加上了一个指针域,在一些情况下能够使程序更加健壮和速率更加高效。

  双链表的结点定义

  typedef struct node

{

  int data;

  struct node *next;

  struct node *prior;

}node;

双链表的定义

  typedef struct doublelist

{

  node *head;

  node *tail;

  size_t size;

}doublelist;

链表的初始化

doublelist *list;

list = (doublelist *)malloc(sizeof(doublelist));

list->head = NULL;

list->tail = NULL;

list->size = 0;

头插:

1.在每次插入新结点是进行一次该双链表是否为空的判断,若为空则头结点为创建的新结点。

 list->head = newnode;

 list->tail = newnode;

2.若链表不为空:

 newnode->next = list->head;//当链表为空时插入头结点时,头结点等于尾结点

 list->head->prior = newnode;

 list->head = newnode;

尾插:

在插入之前进行一次判断

1.链表为空链表时:

 list->tail = newnode;

 list->head = newnode;

2.链表不为空时:

 newnode->prior = list->tail;

 list->tail->next = newnode;

 list->tail = newnode;

双链表的遍历

1.正向遍历

node *tmp;

tmp = list->head;

while(tmp){

  printf("%d ",tmp->data);

  tmp = tmp->next;

}

2.反向遍历

node *tmp;

tmp = list->tail;

while(tmp){

printf("%d ",tmp->data);

tmp = tmp->next;

}

具体的代码实现:github中zou-ting-rong/sample

以上是关于双链表与单链表的比较的主要内容,如果未能解决你的问题,请参考以下文章

数据结构[双链表的实现,以及双链表和单链表之间的比较,链表和顺序表的优劣]

数据结构与算法之双链表

#yyds干货盘点# 数据结构与算法之双链表

#yyds干货盘点# 数据结构与算法之单链表

顺序表与单链表的区别及优缺点

JAVA 链表操作:单连表和双链表