#include
using namespace std;
class Node
{
public:
Node *next;
char *name;
char *number;
char *sex;
char *age;
char *banji;
char *heal;
/*void input()
{
cin>>name;
cin>>number;
cin>>sex;
cin>>age;
cin>>banji;
cin>>heal;
}
void output()
{
cout<<name<<" "<<number<<" "<<sex<<" "<<age<<" "<<banji<<" "<<heal<<endl;
}
*/
};
class linklist
{
public:
Node *head;
int n;
linklist()
{
head=new Node ;
head->next=NULL;
}
void input3()
{
Node *t=head;
Node *q;
for(int i=0; i<n; i++)
{
q=new Node;
t->next=q;
cin>>q->name>>q->number>>q->sex>>q->age>>q->banji>>q->age>>q->banji>>q->heal;
q->next=NULL;
t=q;
}
q->next=head->next;
}
void johesu(linklist a)
{
Node *p=a.head->next,*q=a.head->next;
while(q&&q!=q->next)
{
int i=1;
cin>>n;
for( i=1; i<n; p=q,q=q->next)
i++;
cout<<q->name<<" "<<q->number<<" "<<q->sex<<" "<<q->age<<" "<<q->banji<<" "<<q->age<<" "<<q->banji<<" "<<q->heal<<endl;
p->next=q->next;
delete q;
q=p->next;
}
a.head=NULL;
}
};
int main()
{
linklist a;
int m,n,i;
cin>>m;
a.n=m;
a.input3();
a.johesu(a);
}
請大神指出我的代碼錯誤,本人新手,不喜勿噴。。我只是想不斷改正自己的代碼,發現自己的問題。謝謝!!!!
不知道樓主問題解決了沒有,前天看得太粗,沒有找出問題。今天找到問題了。你之所以輸入崩潰是因為你輸入的數據沒有地方存儲,所以崩潰。你在input3()函數中用了q=new node;開創建一個節點,這一句的執行效果是:在計算機內存中申請到了一塊內存空間,這塊空間大小共7個字節,並且返回了這塊空間第一個字節的地址,賦值給了指針變量q。之所以這樣,是因為你在node類的定義中,定義了7個指針,分別是next,name,number,sex,age,banji和heal。這7個只是指針變量,它們並沒有對應內存空間,所以,在後面input3()函數中,你在需要輸入數據的時候,系統發現你輸入的數據沒有地方存儲,也就是說執行cin>>name >>number…的時候,name,number等是沒有初始化的指針,它們所指向的內存空間可能不存在或者是系統正在使用的內存空間,這是非常危險的。
修改的方法:
第一,你可以在node類的定義中將name,number等變量(除了next變量)定義為字符串類型,或者字符數組類型,而不是像你原來的指針類型;
第二種方法,你可以在node類中添加構造函數,在構造函數中用new運算符為name等的6個指針申請字符串型的內存空間;
第三種方法,你可以在input3()函數中,在cin語句之前,逐一為name等六個指針用new申請字符串類型內存空間,然後再是cin輸入語句。
推薦第一和第二種方法。
希望可以幫到樓主。