「已注销」 2022-04-23 11:50 采纳率: 0%
浏览 13
已结题

c++创建了一个单链表,定义了多个函数,但是只运行了一个函数

编译器为Vscode
代码如下:

#include<iostream>
#include<string>
using namespace std;
typedef struct touch
{
    string name;
    string address;
    string mailcode;
    string telephone;
    string email;
    touch *next;
}Touch;
Touch *Storetouch()
{
    Touch *head=NULL;
    Touch *tail=NULL;
    int number=0;
    cout<<"请输入要存取的数据个数:";
    cin>>number;
    cout<<endl;
    cout<<"name"<<"  address"<<"  mailcode"<<"  telephone"<<"  email"<<endl;
    for(int i=0;i<number;i++)
    {   
        string Name,Address,Mailcode,Telephone,Email;
        cout<<"please input NO."<<i+1<<" 's data:"<<endl;
        cin>>Name>>Address>>Mailcode>>Telephone>>Email;
          Touch *ptouch=new Touch;
          if(ptouch==NULL)
          {
              cout<<"Memrory insufficient!"<<endl;
              break;
          }
          ptouch->name=Name;
          ptouch->address=Address;
          ptouch->mailcode=Mailcode;
          ptouch->telephone=Telephone;
          ptouch->email=Email;
        if(head==NULL)
        {
          head=tail=ptouch;
        }
        else
        {
            tail->next=ptouch;
            tail=ptouch;
        }
    }
    return head;
}
void Printtouch(Touch *head)
{
         Touch *p1=head;
         cout<<endl;
         for(p1;p1!=NULL;p1=p1->next)
         {
             cout<<p1->name<<" "<<p1->address<<" "<<p1->mailcode<<" "<<p1->telephone<<" "<<p1->email<<endl;
         } 
}
Touch *deleteTouch(Touch *head,string na)
{
       if(head==NULL)
       {
           cout<<"The list is empty!"<<endl;
           return NULL;
       }
       Touch *p1,*p2;
       p1=head;
       p2=p1->next;
       while(p2!=NULL)
       {
           if(p2->name==na)
           {
               p1->next=p2->next;
               free(p2);
               p2=p1->next;
           }
           else
           {
               p1=p1->next;
               p2=p2->next;
           }
       }
       if(head !=NULL && head->name==na)
       {
           p2=head;
           head=p2->next;
           free(p2);
           return head;
       }
       return head;
}
void Touchfind(Touch *head)
{
    cout<<"请输入您想要查找的姓名:";
    string naa;
    cin>>naa;
    Touch *p3=head;
    while(p3)
    {
        if(p3->name==naa)
        {
            cout<<p3->name<<" "<<p3->address<<" "<<p3->mailcode<<" "<<p3->telephone<<" "<<p3->email<<endl;
            break;
        }
        else
        p3=p3->next;
    }
}
int main()
{
    Touch *head=NULL;
    head=Storetouch();
    Printtouch(head);
    
    Touchfind(head);

    head=deleteTouch(head,"lihua");
    Printtouch(head);

  
}

运行结果如下:

img

img

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 5月1日
    • 创建了问题 4月23日

    悬赏问题

    • ¥15 为啥画版图在Run DRC会出现Connect Error?可我Calibre的hostname和计算机的hostname已经设置成一样的了。
    • ¥20 网站后台使用极速模式非常的卡
    • ¥20 Keil uVision5创建project没反应
    • ¥15 mmseqs内存报错
    • ¥15 vika文档如何与obsidian同步
    • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
    • ¥15 陆空双模式无人机飞控设置
    • ¥15 sentaurus lithography
    • ¥100 求抖音ck号 或者提ck教程
    • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)