数据结构学习笔记(二) 链表之带表头结点的双循环链表基本操作
2018-01-22 15:52
381 查看
以下是带表头节点的双循环链表的基本操作,包括链表的创建、前插、删除、打印以及逆向打印。
#include<iostream> using namespace std; //抽象数据类型 typedef int datatype; typedef struct node { datatype data; struct node *next,*prior; }DLnode; //双循环链表的创建 void DLCreate(DLnode* head) { datatype x; DLnode *p,*q; p=head; cout<<"请输入创建链表的数据,并以0为结尾:"<<endl; while(cin>>x,x) { q=new DLnode; q->data=x; q->prior=p; q->next=head; p->next=q; head->prior=q; p=q; } } //双循环链表的插入(前插) void DLInsert(DLnode* head,DLnode* p,datatype x) { //生成新结点 DLnode *q=new DLnode; q->data=x; //修改指针 q->prior=p->prior; q->next=p; p->prior->next=q; p->prior=q; } //双循环链表的删除 void DLDelete(DLnode* head,DLnode* p) { p->prior->next=p->next; p->next->prior=p->prior; delete p; } //打印双循环链表 void Print(DLnode* head) { //参数检查 if(head==NULL) { cout<<"链表为空!"<<endl; return; } DLnode *p; p=head->next; cout<<"链表中的元素为:"<<endl; while(p!=head) { cout<<p->data<<" "; p=p->next; } cout<<endl; } //逆向打印双循环链表 void RePrint(DLnode* head) { //参数检查 if(head==NULL) { cout<<"链表为空!"<<endl; return; } DLnode *p=head->prior; while(p!=head) { cout<<p->data<<" "; p=p->prior; } cout<<endl; } //测试函数 int main() { DLnode* head=new DLnode; int i; datatype x; DLCreate(head); Print(head); DLnode *p=head; cout<<"输入要前插的结点编号以及对应的值:"<<endl; cin>>i>>x; while(i--) p=p->next; DLInsert(head,p,x); Print(head); cout<<"输入要删除的结点编号:"<<endl; p=head; cin>>i; while(i--) p=p->next; DLDelete(head,p); Print(head); cout<<"逆向输出双循环链表:"<<endl; RePrint(head); return 0; }
相关文章推荐
- 数据结构学习笔记(二) 链表之带表头结点的单循环链表基本操作
- 数据结构学习笔记(二) 链表之带表头结点的单链表及其基本操作
- 带头结点的循环链表基本操作
- C语言单链表的基本操作(带表头结点)
- bo2-2.cpp 带有头结点的单链表(存储结构由c2-2.h定义)的基本操作(12个)
- 无表头单链表一些基本操作
- C语言实现,无头结点不带环的单向链表的基本操作
- 带头结点的单链表的八种基本操作
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 带表头结点的链表进行栈操作
- C语言单链表,双向链表,循环单链表,循环双链表的基本操作
- 有表头链表的基本操作
- 单向循环链表的创建及基本操作的实现
- YTU.3174: 链表基本操作---指定结点删除
- C语言实现单链表(带头结点)的基本操作
- 程序员面试宝典_链表基本操作,建立,求长,删除和插入特定值的结点
- bo2-3.c 带有头结点单链表的基本操作
- 链表的基本操作(创建,查找指定位置元素,删除指定元素,插入,倒置,去重,求集合的差,分别交换结点与交换结点值实现的冒泡排序,将两个有序链表合并成一个有序链表)c语言实现
- 单向循环链表的基本操作
- 数据结构_线性表_链式存储_单向循环链表的基本操作