我感觉是链表逆序发生了异常,可我找不出错误!帮帮忙吧!
#ifndef LIST_H
#define LIST_H
class list {
public:
list() {number=1.0;pNext=0;}
list(double num,list* pN) : number(num),pNext(pN) {}
double number;
list* pNext;
};
#endif
#ifndef HAISU_H
#define HAISU_H
#include <iostream>
#include "List.h"
using std::cout;
using std::endl;
using std::cin;
//显示链表
void showlist(list* pHead) {
list* m=pHead;int count;
for( count=0;m!=0;m=m->pNext )
{++count;
cout<<m->number;
if(count%5==0) cout<<'\n';
else cout<<' ';}
cout<<endl;
}
//逆序操作
void reverslist(list* pHead) {
list* p=0;list* q=0;
if(pHead) { { p=pHead;q=p->pNext;
p->pNext =0;}
while(q) {list* h=q->pNext;q->pNext=p;p=q;q=h;}
pHead=p;
showlist(pHead);
}
else cout<<"链表为空!";
cout<<endl;
}
//插入操作
void insertlist(list* a,list* pHead) {
double vu=0;
cout<<"请输入一个数进行插入"<<endl;
cin>>vu;
list* b=new list(vu,0);
list* p=a->pNext;
a->pNext =b;
b->pNext =p;
showlist(pHead);
cout<<endl;
}
#include <iostream>
#include "List.h"
#include "haisu.h"
using std::cout;
using std::endl;
using std::cin;
int main() {
list* p=0;
list* pHead=new list(12.4,0);
list* o=new list(67.9,0);
list* r=new list(45.5,0);
list* s=new list(67.9,0);
list* t=new list(48.2,0);
list* u=new list(59.2,0);
list* w=new list(78.3,0);
list* x=new list(96.5,0);
list* y=new list(41.0,0);
list* z=new list(58.9,0);
pHead->pNext =o;
o->pNext =r;
r->pNext =s;
s->pNext =t;
t->pNext =u;
u->pNext =w;
w->pNext =x;
x->pNext =y;
y->pNext =z;
reverslist( pHead);//链表逆序
insertlist( t, pHead);//插入节点
while(p=pHead){
pHead=pHead->pNext;
delete p;
}
return 0;
}
结果:#include <iostream>
#include "List.h"
#include "haisu.h"
using std::cout;
using std::endl;
using std::cin;
int main() {
list* p=0;
list* pHead=new list(12.4,0);
list* o=new list(67.9,0);
list* r=new list(45.5,0);
list* s=new list(67.9,0);
list* t=new list(48.2,0);
list* u=new list(59.2,0);
list* w=new list(78.3,0);
list* x=new list(96.5,0);
list* y=new list(41.0,0);
list* z=new list(58.9,0);
pHead->pNext =o;
o->pNext =r;
r->pNext =s;
s->pNext =t;
t->pNext =u;
u->pNext =w;
w->pNext =x;
x->pNext =y;
y->pNext =z;
reverslist( pHead);//链表逆序
insertlist( t, pHead);//插入节点
while(p=pHead){
pHead=pHead->pNext;
delete p;
}
return 0;
}
结果:58.9 41 96.5 78.3 59.2
48.2 67.9 45.5 67.9 12.4
请输入一个数进行插入
12
12.4