qq_52142245 2021-04-19 22:15 采纳率: 0%
浏览 41

请问那里报错的原因是什么?

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

 

 

typedef struct

{

  char name[8];

  int sex;

  char mobphone[12];

  char homephone[12];

  char email[30];

}DataType;

typedef struct node

 

{

  DataType data;

  struct node *next;

}ListNode;

typedef ListNode * LinkList;

int menu_select();

LinkList createList();

void InsertNode(LinkList *head,ListNode *p);

LinkList ListFind(LinkList head)

void DelNode(LinkList *head);

void PrintList(LinkList head);

 

void main()

{

  ListNode *p;

  LinkList head;

  for(;;){

      switch(menu_select())

              {

           case 1:

                    printf("********************\n");

                    printf("*通讯录链表的建立 *\n");

                    printf("********************\n");

                    head=createList();

                    break;

           case 2:

                    printf("********************\n");

          printf("* 通讯录结点的插入 *\n");

                    printf("********************\n");

                    p=(ListNode *)malloc(sizeof(ListNode));

                    printf("姓名(8)性别(4)手机号码(12)住宅号码(12)邮箱(30)\n");

                    scanf("%s %d %s %s %s",p->data.name,&p->data.sex,p->data.mobphone,p->data.homephone,p->data.email);

                    InsertNode(&head,p);

                    break;

            case 3:

                    printf("********************\n");

          printf("*** 通讯录结点的删除 **********\n");

                    printf("********************\n");

                    DelNode(&head);

                   break;

             case 4:

                           printf("********************\n");

          printf("*** 通讯录结点的查询 **********\n");

                    printf("********************\n");

                    p=ListFind(head);

                    if(p! =NULL)

                    {

                      printf("姓名 性别 手机号码 住宅号码 邮箱\n");

                           printf("---------------------------------\n");

                           printf("%s %d %s %s %s",p->data.name,&p->data.sex,p->data.mobphone,p->data.homephone,p->data.email);

                           printf("---------------------------------\n");

                    }

                    else

                             printf("该记录不存在\n");

                    break;

                  case 5:

                    printf("********************\n");

          printf("*** 通讯录结点的输出 **********\n");

                    printf("********************\n");

                    PrintList(head);

                    break;

                  case 0:

                           printf("\t再见!\n");

                  return;

           }

  }

}

 

 

int menu_select()

{

  int sn;

  printf("通讯录管理系统\n");

  printf("========================================\n");

  printf("1.通讯录链表的建立\n");

  printf("2.通讯录结点的插入\n");

  printf("3.通讯录结点的删除\n");

  printf("4.通讯录结点的查询\n");

  printf("5.通讯录结点的输出\n");

  printf("0.退出管理系统\n");

  printf("========================================\n");

  printf("请选择0-5\n");

  for(;;)

  {

    scanf("%d",&sn);

         if(sn<0||sn>5)

                   printf("\n\t输入错误,重选0-5");

         else

                  break;

  }

  return sn;

}

 

 

 

 

LinkList createList()

{

  LinkList head;

  ListNode *p;

  char flag='y';

  head=NULL;

  while((flag=='y')||(flag=='Y'))

  {

    p=(ListNode * )malloc(sizeof(ListNode));

         if(!p)

                  exit(-1);

         printf("姓名(8)性别(4)手机号码(12)住宅号码(12)邮箱(30)\n");

         scanf("%s %d %s %s %s",p->data.name,&p->data.sex,p->data.mobphone,p->data.homephone,p->data.email);

         p->next=head;

         head=p;

         getchar();

         printf("继续输入吗?(y/n),\n");

         scanf("%c",&flag);

  }

  return head;

}

 

 

 

void InsertNode(LinkList *head,ListNode *p)

{

  char flag='y';

  p->next=*head;

  *head=p;

  while((flag=='y')||(flag=='Y'))

  {

    printf("继续添加吗?(y/n),\n");

         scanf("%c",&flag);

         if((flag=='y')||(flag=='Y'))

         {

           p=(ListNode * )malloc(sizeof(ListNode));

           if(!p)

                  exit(-1);

         printf("姓名(8)性别(4)手机号码(12)住宅号码(12)邮箱(30)\n");

         scanf("%s %d %s %s %s",p->data.name,&p->data.sex,p->data.mobphone,p->data.homephone,p->data.email);

         p->next=*head;

         *head=p;

         }

  }

}

 

 

 

LinkList ListFind(LinkList head)

{

  ListNode *p;

  char name[8];

  p=head;

  printf("请输入要查找的名字:");

  scanf("%s",name);

  while(p && strcmp(p->data.name,name)!=0)

           p=p->next;

  return p;

}

 

 

void DelNode(LinkList *head)

{

  ListNode *p,*q;

  p=ListFind(*head);

  if(p==NULL)

{

   printf("没有查到要删除的通讯录\n");

   return;

}

if(*head==p)

{

  *head=(*head)->next;

  free(p);

  printf("通讯者已被删除!\n");

}

}

void PrintList(LinkList head)

{

  ListNode *p;

  p=head;

  printf("姓名 性别 手机号码 住宅号码 邮箱\n");

  printf("---------------------------------");

  while(p!=NULL)

  {

    printf("%s %d %s %s %s",p->data.name,&p->data.sex,p->data.mobphone,p->data.homephone,p->data.email);

         printf("---------------------------------\n");

         p=p->next;

  }

}

  • 写回答

3条回答 默认 最新

  • qq_52142245 2021-04-19 22:33
    关注

     

    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)