首页 > 其他 > 详细

链表(三)双向链表

时间:2021-01-29 10:07:01      阅读:25      评论:0      收藏:0      [点我收藏+]

1.概念
双向链表(Double Linked List)的节点有两个指针,一个指向直接前驱,一个指向直接后继。
2.优点
查找直接前驱执行时间为O(1),单链表为O(n).
3.存储结构

//双向链表
typedef struct DuLNode{

 int data;
 struct DuLNode *prior;
 struct DuLNode *next;

}DuLNode,*DuLinkList;

4.简单实例

#include <iostream>
#include <string.h>
using namespace std;
//双向链表
typedef struct DuLNode{

 int data;
 struct DuLNode *prior;
 struct DuLNode *next;

}DuLNode,*DuLinkList;

void InitList(DuLinkList &L)
{
    L=new DuLNode;
    L->data = 0;
    L->prior = NULL;
    L->next = NULL;
}

void add(DuLinkList L,int d)
{
    while(L->next!=NULL)
    {
        L=L->next;
    }
    DuLNode *n=new DuLNode;
    n->data=d;
    n->next=NULL;
    n->prior=L;
    L->next=n;
}

void display(DuLinkList L)
{
    DuLNode *p=NULL;
    p=L->next;
    while(p!=NULL)
    {
       cout<<p->prior->data<<"<=前驱="<<p->data<<"=后继=>"<<p->next->data<<endl;
       p=p->next;
    }
}
void newlist(DuLinkList L)
{
    int n=1;
    while(n)
    {
    int t;
    cout<<"InPut.";cin>>t;
    add(L,t);
    cout<<" Do you want new a node[1/0] agin?"<<endl;
    cin>>n;
    }
}
int main()
{
    DuLinkList L;
    InitList(L);
    newlist(L);
    display(L);
}

5.运行效果
技术分享图片

链表(三)双向链表

原文:https://www.cnblogs.com/hugboy/p/14342330.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!