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

不要用模板来写,因为那个我看不懂。程序中包含建立链表,显示链表,删除节点,插入节点,计算节点个数,查找制定节点。

以前的写的一个简单双链表我直接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;
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

用c++语言实现双向链表的排序
}\/\/ 冒泡排序对链表进行排序void BubbleSort(Node *head) {Node *pTemp;int maxIdx, idx;\/\/ 计算链表长度maxIdx = 0;for (pTemp = head; pTemp != NULL; pTemp = pTemp->next)++maxIdx;idx = 0;while (idx < maxIdx-1) {for (pTemp = head; idx < maxIdx-1; pTemp = pTemp->...

c++ 编写一个线程安全的双向链表,要代码!
include <stdio.h> include <stdlib.h> include <afxmt.h> struct dllist { int number;struct dllist *next;struct dllist *prev;};CCriticalSection mysec;struct dllist *head, *tail;void initial_node(struct dllist *lnode);void append_node(struct dllist *lnode);void insert_node(s...

C++ 双向链表 插入1,2,3,4,5,6,7,8,9,10到随机任意位置 然后再按1-1...
}LNodeo,*LinkList;\/\/打印双向链表 void PrintfLink(LinkList phead){ if(phead == NULL)printf("双向链表为空!\\n");while(phead !=NULL){ printf("%d ",phead->data);phead=phead->next;} printf("\\n");} \/\/生成双链表 LinkList CreatLink(){ LinkList head=NULL,p,t,t1;int...

双向链表排序c语言程序设计
1、输入一个双向链表;2、显示此双向链表所有结点;3、对此双向链表分别按序号或数值进行排序;4、删除双向链表中的结点。小花鸟一号 | 浏览1492 次 |举报 我有更好的答案推荐于2017-12-16 14:51:06 最佳答案 \/* 请输入链表结点数 : 5 序号: 60357 数据: 8693 序号: 63415 数据: 3487 序号: 38419 数据: ...

C++蜗牛爬树问题,求高手来(我是伸手党)
用一个go_up函数表示向上爬,用go_down函数表示向下滑,直至到达树顶结点 *\/ include <stdio.h> include <alloc.h> \/* 定义双向链表 *\/ typedef node linknode;typedef struct node { int position;int counter;linknode *prev;linknode *next;} link;\/* 定义头、尾、当前指针 *\/ link *...

c++ 单向链表和双向链表有什么区别?各自有什么优缺点?
1、双向链表:从双向链表中的任意一个结点开始,都可以很方便地访问前驱结点和后继结点。2、单向链表:单个结点创建非常方便,普通的线性内存通常在创建的时候就需要设定数据的大小,结点的访问方便,可以通过循环或者递归的方法访问到任意数据。三、缺点不同 1、双向链表:增加删除节点复杂,需要多分配一个...

c++ 单向链表和双向链表有什么区别?各自有什么优缺点?
双向链表:每个节点有2个链接,一个是指向前一个节点(当此链接为第一个链接时,指向的是空值或空列表),另一个则指向后一个节点(当此链接为最后一个链接时,指向的是空值或空列表)。意思就是说双向链表有2个指针,一个是指向前一个节点的指针,另一个则指向后一个节点的指针。优点:可以找到...

谁告诉我c++里的链表是什么东西啊?
链表和C++语言本身没有任何联系。很多语言都可以实现链表数据结构。我讲一下数据和链表的区别有可能帮助你对链表的使用有个感觉。数组是将元素在内存中连续存放,由于每个元素占用内存相同,所以你可以通过下标迅速访问数组中任何元素。但是如果你要在数组中增加一个元素,你需要移动大量元素,在内存中空出一...

求解释e:\\c++\\双向链表\\双向链表.cpp(518) : error C2679: binary '<<...
加了#include<iomanip.h>头文件?设置了文件对其格式?fout.flags (ios::left);\/\/在文件里输入的是左对齐 cout.flags(ios::left);\/\/这里也要设定左对齐,否则就是右对齐

谁能解决一道C++编程题
谁能帮我用c++语言帮我做一个通讯录系统啊,要求是必须用文件的输入输出做,每条记录里包括学生的姓名,编号和电话号码... 谁能帮我用c++语言帮我做一个通讯录系统啊,要求是必须用文件的输入输出做,每条记录里包括学生的姓名,编号和电话号码 展开  我来答 ...

相似回答
大家正在搜