双向链表

来源:互联网 发布:管家婆软件服务电话 编辑:程序博客网 时间:2024/05/22 16:59

双向链表容易查找前驱和后驱的结点,在双向链表中至少有三个域:左链域,数据域,右链域,该结构如图:
这里写图片描述
根据上面的结构我们可以知道一条关系:ptr=ptr->llink->rlink=ptr->rlink->llink
该双向链表的头结点如图:
这里写图片描述
双向链表的插入和删除操作的代码如下:

#include <iostream>#include<stdio.h>#include<stdlib.h>using namespace std;typedef struct{   int data;}element;typedef struct node *node_pointer;//双向链表的结构struct node{   element item;   node_pointer rlink;   node_pointer llink;};//双向链表插入操作void dinsert(node_pointer node,node_pointer newnode){   //newnode插入到node的后驱   newnode->rlink=node->rlink;   newnode->llink=node;   node->rlink->llink=node;   node->rlink=newnode;}//双向链表删除操作void ddelete(node_pointer node,node_pointer deleted){   if(node==deleted)      printf("Deletion of head node not permited.\n");   else   {      deleted->llink->rlink=deleted->rlink;      deleted->rlink->llink=deleted->llink;      free(deleted);   }}
0 0
原创粉丝点击