WSS_ 2020-10-17 17:14 采纳率: 37.5%
浏览 42
已采纳

紧急求助!!请问这段代码中的Sort函数有什么问题吗?为什么一直都没办法输出?

#include
#include
using namespace std;
class Node

{

public:

int seat;
string name;
Node *link; //指向后继指针的结点
Node()

{

    seat = 0;
    link = NULL;
}
Node(const int m)
{
    seat = m;
    link = NULL;
}

};

class Passenger

{

public:
Node *head, *tail; //表头和表尾指针  
Passenger()
{
    head = tail = NULL;
}
void clear();
void PreTicket();//预定机票 
void Sort();
void delTicket(int a);//删除机票 (输入姓名)
bool findTicket(const int value);//查找是否预定
void printList(); //输出链表
~Passenger()
{
    clear();
}

};

void Passenger::Sort()

{

Node *p,*q;
p=head->link;
q=p->link;
while(p!=NULL)
{
    if(p->name>q->name)
    {
        int t;
        string temp;
        t=p->seat,p->seat=q->seat,q->seat=t;
        temp=p->name,p->name=q->name,q->name=temp;          
    }
    p=p->link;
    q=q->link;
} 

}

void Passenger::printList()

{

Node* p = this->head->link;
while (p != NULL) {
    cout << p->seat << " "<<p->name<<endl; 
    p = p->link;

}

cout << endl;

}

void Passenger::PreTicket()//预定机票

{

Node* s = new Node;
Node* p;
this->head = s;
this->tail = s;
this->tail->link = NULL;
cout << "输入以 0 为结束" << endl;
int sit;
string n;
cout<<"请输入姓名";
cin >> n;//姓名 
cout<<"请输入座位号" ;
cin>>sit;//座位号 
while (sit != 0 && sit!= '0') //输入为0时,链表构建结束
{   
    p=new Node;
    p->seat=sit;
    p->name=n;
    p->link=s->link;    
    s->link=p;  
    s=p;
    cout<<"请输入姓名";
    cin >> n;//姓名 
    cout<<"请输入座位号" ;
    cin>>sit;//座位号
}

}

void Passenger:: delTicket(int a)//删除机票 (输入座位号)

{

Node *p,*q,*t,*pre;
pre=head;
p=head->link;
while(p!=NULL)
{
    if(p->seat==a)
    {
        t=p->link;
        pre->link=t;
        p=t;
    }
    else
    {
        pre=p;
        p=p->link;
    }
}       

}

bool Passenger:: findTicket(const int value)//
{

//int count=0;
Node *p=head->link;
while(p!=NULL)
{   
    if(p->seat!=value)
    {
        p=p->link;
        //count++;
    }
    else
    {
        cout<<"已被预订" <<endl;
        cout<<p->name<<" "<<p->seat<<endl;
        return true;
    }
}   
cout<<"未被预定"<<endl; 
return false; 

}
void Passenger::clear()
{

Node* p;
while (head != NULL) {
    p = this->head;
    head = this->head->link;
    delete p;
}
head = tail = NULL;

}
int main()

{

Passenger l;
l.PreTicket();//订票
l.Sort();
l.printList();
int sit; 
cin>>sit;
l.findTicket(sit);//查找是否预定
l.delTicket(sit);//删除 
l.printList();//显示 
return 0;  

}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:43
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 2月7日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?