我是靠谱客的博主 烂漫金鱼,最近开发中收集的这篇文章主要介绍循环双向链表的建立,插入,和 删除,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


```cpp
#include<iostream>
using namespace std;
typedef struct student
{
int scores;
student *next;
student *prior;
}*Linklist ,Link;
void creat(Linklist &L,int n);
void shanchu(Linklist &L,int i);
void charu(Linklist &L,int i,int e);
void printlist(Linklist &L);
int counts(Linklist &L);
int main()
{
Linklist p;
int n,m;
cout<<"你想创建几个节点"<<endl;
cin>>n;
creat(p,n);
printlist(p);
cout<<"你想删除第几个节点"<<endl;
cin>>n;
shanchu(p,n);
printlist(p);
cout<<"你想在把数据插入在第几个节点"<<endl;
cin>>n;
cout<<"你想插入的数据是多少"<<endl;
cin>>m;
charu(p,n,m);
printlist(p);
return 0;
}
void creat(Linklist &L,int n)
{
int i=0;
L=new Link;
L->next=NULL;
Linklist r=L;
Linklist s;
for(i=0;i<n;i++)
{
s=new Link;
cin>>s->scores;
r->next=s;
s->prior=r;
r=s;
}
r->next=L;
L->prior=r;
}
void printlist(Linklist &L)
{
Linklist p=L->next;
while(p!=L)
{
cout<<p->scores<<" ";
p=p->next;
}
cout<<endl;
}
void shanchu(Linklist &L,int i)
{
int j=1;
Linklist p1=L->next;
Linklist p2;
while(j<i&&p1!=L)
{
p1=p1->next;
j++;
}
if(p1==L)
{
return ;
}
p2=p1;
p1=p1->prior;
p1->next=p2->next;
p2->next->prior=p1;
delete(p2);
}
void charu(Linklist &L,int i,int e)
{
if(i<1||i>counts(L))
{
return ;
}
int j=1;
Linklist p=L->next,s;
while(j<i&&p!=L)
{
p=p->next;
j++;
}
p=p->prior;
if(p->next==L)
{
s=new Link;
s->scores=e;
p->next=s;
s->prior=p;
s->next=L;
L->prior=s;
}
else
{
s=new Link;
s->scores=e;
s->next=p->next;
p->next->prior=s;
p->next=s;
s->prior=p;
}
}
int counts(Linklist &L)
{
Linklist p=L->next;
int i=0;
while(p!=L)
{
i++;
p=p->next;
}
return i+1;
}

最后

以上就是烂漫金鱼为你收集整理的循环双向链表的建立,插入,和 删除的全部内容,希望文章能够帮你解决循环双向链表的建立,插入,和 删除所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部