链表(三)双向链表
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.运行效果
注 : 最后一个节点6
无直接后继。
6.补充
类似单链的循环表,双向链表也有循环表,如下图
__EOF__
本文作者:HUGBOY
本文链接:https://www.cnblogs.com/hugboy/p/sxlb.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/hugboy/p/sxlb.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
________________________________________________________
Every good deed you do will someday come back to you.
Love you,love word !
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步