c++创建单链表这样写为什么会出现ACCESS_VIOLATION错误
发布网友
发布时间:2024-10-25 05:37
我来回答
共2个回答
热心网友
时间:2024-10-25 05:54
给你改了一下,不知是不是你所需要的:
#include <string>
#include <iomanip>
#include <iostream>
using namespace std;
typedef struct LNode{
double a;
int n;
struct LNode *next;
}LNode,*Linklist;
//void chushihua(Linklist &l){
//l=new LNode;
//l->next=NULL;
//}
string CreatLinklist(Linklist &l){
Linklist r,p;
r=new LNode;
//r=l;
l=r;
int k;
string name;
cin>>name;
cin>>k;
while (k)
{
cin >>r->a >>r->n;
p=new LNode;
//cin>>p->a>>p->n;
p->next=NULL;
r->next=p;
r=p;
k--;
}
return name;
}
void showLinklist(Linklist l,string name){
double a;
int n;
char x='x';
char fh;
Linklist p;
//p=new LNode;
//p=l->next;
if(l==NULL){
cout <<"Empty!";
return;
}
p=l;
a=p->a;
n=p->n;
cout<<name<<" "<<"="<<" ";
cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<x<<"^"<<n;
p=p->next;
while( p->next!=NULL )
{
a=p->a;
n=p->n;
if(a>0)
fh='+';
else {
fh='-';
a=-a;
}
cout<<" "<<fh<<" "<<setiosflags(ios::fixed)<<setprecision(2)<<a<<x<<"^"<<n;
p=p->next;
}
//a=p->a;
//n=p->n;
//if(a>0)fh='+';
//else {
//fh='-';
//a=-a;
//}
//cout<<" "<<fh<<" "<<a<<x<<"^"<<n;
cout<<endl;
}
int main(){
string name;
//while (cin)
//{
Linklist l=0;
//chushihua(l);
name=CreatLinklist(l);
showLinklist(l,name);
//}
return 0;
}
热心网友
时间:2024-10-25 05:54
void showLinklist(Linklist l,string name){
double a;
int n;
char x='x';
char fh;
Linklist p;
//p=new LNode; 这里多余,有内存泄漏
p=l->next;
a=p->a;
n=p->n;
cout<<name<<" "<<"="<<" ";
cout<<setiosflags(ios::fixed)<<setprecision(2)<<a<<x<<"^"<<n;
//p=p->next; 这里跳过了根节点?
// 后面的语句你没有判断p为NULL的情况,所以会出错
while (p && p->next) // 加上判断p != NULL的判断,后面a=p->a等也要加
。。。。