Movingto 2019-02-10 15:55 采纳率: 0%
浏览 465

本人写了一个C++链表,但输入时却无法停止,求路过高人指点

#include
#include
#include
using namespace std;
struct PhoneBook
{
char name[20];
char number [15];
PhoneBook *next;
};
void print(PhoneBook*head);
PhoneBook *creat();
void swap(PhoneBook*head);
PhoneBook*insert(PhoneBook*head,PhoneBook*phonenum);
int main()
{
PhoneBook *p,*head;
head=creat();
swap(head);
cout<<"建立的链表为:"< print(head);
cout gets(p->name) ;
gets(p->number);
head=insert(head,p);
cout<<"添加之后的链表为:";
print(head);
return 0 ;
}
PhoneBook*creat()
{
cout<<"现在建立电话本,请依次输入姓名及电话号码:";
PhoneBook *p1,*p2,*head;
head=NULL;
p1=new PhoneBook;
p2=p1;
gets(p1->name);
gets(p1->number) ;
while(p1->name !="000")
{
cout<<"请输入下一个:"< if(head==NULL)
head=p1;
else p2->next =p1;
p2=p1;
p1=new PhoneBook;
gets(p1->name);
gets(p2->number);
}
p2->next=NULL;
delete p1;
return head;
}
void print(PhoneBook*head)
{
PhoneBook *p;
p=head;
while(p!=NULL)
{
cout<name<<" ";
cout<number < p=p->next;
}
}
PhoneBook*insert(PhoneBook*head,PhoneBook*phonenum)
{
PhoneBook *p;
p=head;
if(p==NULL)
{
head=phonenum;
head->next =NULL;
return 0;
}
if(strcmp(p->name,phonenum->name)>0)
{
phonenum->next =head;
head=phonenum;
return head;
}
while(p->next &&strcmp(p->next->name ,phonenum->name )>0)
{p=p->next ;}
phonenum->next=p->next;
p->next=phonenum;
return head;
}
void swap(PhoneBook*head)
{
PhoneBook *p1,*p2;
p1=head;
p2=p1->next;
for(;p1!=NULL;)
{ for(;p2!=NULL;)

        PhoneBook*temp=head;
        if(strcmp(p1->name ,p2->name)>0)
        {*temp=*p2;
        *p2=*p1;
        *p1=*temp;
        }
        p2=p2->next;
    }
p1=p1->next;
}

}
{图片说明图片说明

  • 写回答

1条回答 默认 最新

  • devmiao 2019-02-11 23:43
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区
  • ¥15 在grasshopper里DrawViewportWires更改预览后,禁用电池仍然显示
  • ¥15 NAO机器人的录音程序保存问题