#include <iostream>
#include <malloc.h>
using namespace std;
typedef struct DuLNone{
int data;
struct DuLNone *prior,*next;
}DuLNone,*DuLinklist;
void InitLink(DuLinklist &L){
L =new DuLNone;
L->prior = NULL;
L->next = L->prior;
}
void top_CreaLink(DuLinklist &L){//头插法
int n;
DuLinklist p;
cout<<"请输入要赋值的个数"<<endl;
cin>>n;
cout<<"请输入"<<n<<"位数"<<endl;
while(n--){
p = new DuLNone;//创建新节点
cin>>p->data;//给新节点->data赋值
p->prior = L;//新节点头指针指向L
p->next = L->next;//新节点尾指针指向当前节点位置
L->next = p; //头节点next指向当前节点位置
}
}
void bot_CreaLink(DuLinklist &L){//尾插法
int n;
DuLinklist p,r;
r = L;
cout<<"请输入要赋值的个数"<<endl;
cin>>n;
cout<<"请输入"<<n<<"位数"<<endl;
while(n--){
p = new DuLNone;
cin>>p->data;
p->prior = r;
p->next = NULL;
r->next = p;
r = p;
}
}
int GetLink(DuLinklist L,int e){
DuLinklist p;
p = L->next;
int j = 1;
while(p != NULL && p->data != e){
j++;
p = p->next;
}
if(p==NULL)return 0;
return j;
}
void DelLink(DuLinklist &L,int e){
DuLinklist p,r;
p = L->next;
int j = 1;
while(p != NULL && j<e){
j++;
p = p->next;
}
if(p->next == NULL){//删除最后一个节点
r = p->prior;
r->next = NULL;//删除非最后一个节点
}else{
r = p->prior;
r->next = p->next;
r = p->next;
r->prior= p->prior;
}
}
void InterLink(DuLinklist L,int e,int n){
DuLinklist p,r;
p = L->next;
int j = 1;
while(p != NULL && j<n-1){
j++;
p = p->next;
}
r = new DuLNone;
r->data = e;
r->prior = p->prior;
r->next = p;
p->prior = r;
p = r->prior;
p->next = r;
}
void ListLink(DuLinklist L){
DuLinklist p;
p = L->next;
while(p!=NULL){
cout<<p->data<<' ';
p = p->next;
}
}
void error(){
cout<<endl<<"数据错误,请重新运行程序!!!";
}
int main() {
DuLinklist L;
int e,n;
InitLink(L);
// top_CreaLink(L);
bot_CreaLink(L);
ListLink(L);
cout<<endl<<"请输入删除的数"<<endl;
cin>>e;
e = GetLink(L,e);
DelLink(L,e);
ListLink(L);
cout<<endl<<"请输入插入的位置"<<endl;
cin>>n;
cout<<endl<<"请输入插入的数"<<endl;
cin>>e;
InterLink(L,e,n);
ListLink(L);
}
双向链表的基本操作:创建、构造、查找、删除、插入
最新推荐文章于 2024-09-11 15:01:00 发布
本文介绍了一段使用C++实现的链表操作代码,包括头插法(top_CreaLink)、尾插法(bot_CreaLink)、获取节点位置(GetLink)、删除节点(DelLink)和在指定位置插入(InterLink)。通过实例展示了如何创建、操作和维护动态链接列表。
摘要由CSDN通过智能技术生成