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条回答 默认 最新

相关推荐 更多相似问题