3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
這個(gè)改過了,保證好用。
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(int,string);
int No;
string name;
Person *next; /*指向下一個(gè)元素的指針*/
};
Person::Person(int inputNumber,string inputName) /*構(gòu)造函數(shù)*/
{
next=NULL;
No=inputNumber;
name=inputName;
}
void create(Person **phead,Person **ptail,int inputNumber,string inputName)
/*如果phead指針不為空,說明鏈表已存在,退出
如果為空,則創(chuàng)建第一個(gè)元素,
將表首表尾指針同時(shí)指向該元素
*/
{
if((*phead)!=NULL)
{
cout<<"鏈表已存在,無法重新建立,退出"<<endl;
return;
}
else
{
(*phead)=new Person(inputNumber,inputName);
(*ptail)=(*phead);
cout<<"表創(chuàng)建成功,請(qǐng)繼續(xù)輸入!"<<endl;
}
}
void add(Person **ptail,int inputNumber,string inputName) /*向鏈表尾添加元素,并將表尾指針指向該元素*/
{
(*ptail)->next=new Person(inputNumber,inputName);
(*ptail)=(*ptail)->next;
}
void display(Person **phead) /*由首元素開始逐個(gè)元素顯示,直到尾元素*/
{
while((*phead)!=NULL)
{
cout<<"No:"<<(*phead)->No<<" "<<"Name:"<<(*phead)->name<<endl;
(*phead)=(*phead)->next;
}
}
int main()
{
Person *phead=NULL;
Person *ptail=NULL;
int inputNumber;
string inputName;
cout<<"請(qǐng)輸入第一個(gè)人的編號(hào)及姓名:"<<endl;
cin>>inputNumber>>inputName;
create(&phead,&ptail,inputNumber,inputName);
bool flag=true;
while(flag)
{
cin>>inputNumber;
if(inputNumber==0)
{
flag=false;
cout<<"輸入為0,終止輸入"<<endl;
}
else
{
cin>>inputName;
add(&ptail,inputNumber,inputName);
}
}
display(&phead);
cout<<"按任意數(shù)字鍵退出..."<<endl;
cin>>inputName;
return 0;
}

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果我沒有看錯(cuò)的話,你應(yīng)該是尾巴少掉了一點(diǎn)。
我用的是win-tc,就沒有對(duì)你的程序調(diào)試。
我看了下,可能是下面這段程序出了問題
while( p1 -> num != 0 )
{ p2 = p1;
p1 = new student;
cin >> p1->num >> p1->score ;
p2 -> next = p1;
}
p2 -> next = NULL;
return ( head );
}
或許,你可以將p2 -> next = NULL;寫成p1 -> next = NULL;

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊
1 ,head=creat2(head,head2);
此處的head 2 沒有賦值 head2 = nullptr;
2 在create2里面
(*stu).num=(*p1).num,(*stu).score=(*p1).score;
insert( head2, stu);
p2 = p1;
此處的head2 = null,
而在insert() 里面
p1=head;也就是說p1 = null
head2=NULL;
在下去 , 你又 if ( p0 -> num <= p1 -> num )
p1 本來= null, 何來的num.
- 3 回答
- 0 關(guān)注
- 202 瀏覽
添加回答
舉報(bào)