哪个高手用C++的类写一个双向链表程序给我啊?

不要用模板来写,因为那个我看不懂。程序中包含建立链表,显示链表,删除节点,插入节点,计算节点个数,查找制定节点。... 不要用模板来写,因为那个我看不懂。程序中包含建立链表,显示链表,删除节点,插入节点,计算节点个数,查找制定节点。 展开
 我来答
____年华里____
推荐于2016-03-23 · TA获得超过109个赞
知道答主
回答量:93
采纳率:0%
帮助的人:89.1万
展开全部
以前的写的一个简单双链表我直接copy一下吧,功能有插入、删除,输入的时候-1标志结束,有不懂的地方可以再问
//双链表(功能: 插入元素insert 删除元素del)
#include<iostream>
using namespace std;
typedef struct node{
int data;
struct node *n1;
struct node *n2;
}SNODE;
SNODE *head,*tail;
SNODE* creat(){
int num;
SNODE *head,*r,*s;
head=(SNODE *)malloc(sizeof(SNODE));
tail=(SNODE *)malloc(sizeof(SNODE));
r=head;
cin>>num;
while(num!=-1){
s=(SNODE *)malloc(sizeof(SNODE));
s->data=num;
r->n1=s;
s->n2=r;
r=s;
cin>>num;
}
r->n1=tail;
tail->n2=r;
tail->n1=head;
head->n2=tail;
return head;
}
void print(SNODE *M){
SNODE *p;
if(M==head){M=head;goto head;}
if(M==tail){M=tail;goto tail;}
head:
if(M->n1==tail){cout<<"空链表\n";return;}
p=M->n1;
cout<<"正序输出链表开始->";
while(p!=tail){
cout<<p->data<<"->";
p=p->n1;
}
cout<<"结束\n";return;
tail:
if(M->n2==head){cout<<"空链表\n";return;}
p=M->n2;
cout<<"逆序输出链表开始->";
while(p!=head){
cout<<p->data<<"->";
p=p->n2;
}
cout<<"结束\n";return;
}
void insert(SNODE *head){
int m,n;
SNODE *p,*q;
p=(SNODE *)malloc(sizeof(SNODE));
q=head->n1;
cout<<"\n\n请输入要插入的位置: ";cin>>m;
cout<<"请输入要插入的元素: ";cin>>n;
while(q!=head&&q->data!=m)q=q->n1;
if(q->data==m){
p->data=n;
p->n2=q->n2;
p->n1=q;
q->n2->n1=p;
q->n2=p;
}
else{cout<<"未找到该元素\n";return;}
cout<<"插入元素后输出如下:\n";
print(head);
print(tail);
}
void del(SNODE *head){
SNODE *p;
p=head->n1;
if(p==tail){cout<<"空链表\n";return;}
int n;
cout<<"\n\n请输入要删除的元素: ";
cin>>n;
while(p!=tail&&p->data!=n)p=p->n1;
if(p->data==n){
p->n1->n2=p->n2;
p->n2->n1=p->n1;
}
else{cout<<"未找到该元素\n";return;}
cout<<"\n\n删除元素后输出如下: \n";
print(head);
print(tail);
}
void main(){
char s;
head=creat();
print(head);
print(tail);
cout<<"\n\n是否要插入元素? Y插入 N退出\n";
cin>>s;
while(s=='y'||s=='Y'){
insert(head);
cout<<"\n\n是否要继续插入元素? Y插入 N退出\n";
cin>>s;
}
cout<<"\n\n是否要删除元素? Y删除 N退出\n";
cin>>s;
while(s=='y'||s=='Y'){
del(head);
cout<<"\n\n是否要继续删除元素? Y删除 N退出\n";
cin>>s;
}
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式