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等也要加
    。。。。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com