沈阿清 2021-06-18 03:35 采纳率: 50%
浏览 19
已采纳

请问各位大佬这个通讯录代码第五个查找功能是哪里出了问题

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

typedef struct Node{

    struct {

        char name[20];

        char number[12];

    }data; //定义结构变量 

    char name[20];

    char number[12];

    struct Node *next;

}LNode,*LinkList;

void create(LinkList &L,int n)

{

 LinkList p;

 int i;

 L=(LinkList)malloc(sizeof(LNode));

 L->next=NULL; //建立带头结点的单链表 

 for(i=n;i>0;--i){

  p=(LinkList)malloc(sizeof(LNode)); //生成新结点 

  printf("请输入联系人姓名:");

  scanf("%s",p->data.name);

  printf("请输入联系人电话号码:");

  scanf("%s",p->data.number); 

  p->next=L->next;

  L->next=p;

 }

int insert(LinkList &L,int i,LinkList &s){//插入数据 

 LinkList p=L;int j=0;

 while (p&&j<i-1){

  p=p->next;++j;

 }

 if(!p||j>i-1){

        printf("插入位置不合法!");

        exit (1);

    }

    else{

  s=(LinkList)malloc(sizeof(LinkList));

        printf("请输入需要插入的联系人姓名:");

        scanf("%s",s->data.name);

        printf("请输入需要插入的联系人电话:");

        scanf("%s",s->data.number);

     s->next=p->next;

     p->next=s;     

 }

 return 1;

}

int delete0(LinkList &L,int i,LinkList &e){//删除第i个结点

    LinkList p=L,q;

    int j=0;

    while(p->next&&j<i-1){  

     p=p->next;

     ++j;

 }

 if(!(p->next)||j>i-1){

  printf("删除位置不合法");

  exit(1); 

 }

 else{

  q=p->next;

     p->next=q->next;

    // e=q;

     free(q);

     printf("您已删除成功!\n");

 } 

 

}

int locate(LinkList &L,int i,LinkList &s){

 LinkList p;int j=0; 

 while(p->next&&j<i-1){  

     p=p->next;

     ++j;

 }

 if(!p||j>i-1){

  printf("查找位置不合法");

  exit(1); 

 }

 else printf("%s\t%s\n",p->data.name,p->data.number);

}

void exit()

{

    printf("退出中.....\n");

    system("pause");

    exit(0);

}

void print(LinkList &L)

{

    LinkList p;

    p=L;

    printf("姓名\t\t电话\n\n");

    while(p->next!=NULL){

        p=p->next;

        printf("%s\t%s\n",p->data.name,p->data.number);

    }

}

int main()

{

 int choice;

 int n,i,j;

 LinkList p=NULL;

 LinkList L,s,e;

 while(1)

 {

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

        printf("1.创建链表\n");

        printf("2.插入个人信息\n");

        printf("3.删除个人信息\n");

        printf("4.显示全部信息\n");

        printf("5.查找个人信息\n");

        printf("6.退出\n");

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

        printf("请输入功能序号\n");

     scanf("%d",&choice);

     switch(choice) {

  case 1:

   printf("输入你想创建的数据组数:");

   scanf("%d",&n); 

      create(L,n);

      break;

  case 2:

   printf("请输入需要插入的位置:");

            scanf("%d",&i); 

      insert(L,i,s); 

      break;

  case 3:

      printf("输入你想删除的位置:"); 

      scanf("%d",&i);

   delete0(L,i,e); 

   break;

  case 4:

   print(L);

   break;

  case 5:

   printf("输入你想查找的位置:"); 

      scanf("%

d",&i);

   locate(L,i,s);

  case 6:

   exit();

   break; 

  default:printf("输入有误,请重新输入:");

      break; 

     }

    }

 return 0;

 

展开全部

  • 写回答

2条回答 默认 最新

  • 套你的猴子 2021-06-18 03:44
    关注
    int locate(LinkList &L,int i,LinkList &s){
     LinkList p;int j=0; 
        //这里你要循环L链表啊
     while(L->next&&j<i-1){  
    
         p=L->next;
    
         ++j;
    	
     }
    
     if(!p||j>i-1){
        printf("查找位置不合法");
    
        exit(1); 
    
        }else { 
             printf("%s\t%s\n",p->data.name,p->data.number);
        } 
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 KeiI中头文件找不到怎么解决
  • ¥15 QT6将音频采样数据转PCM
  • ¥15 本地安装org.Hs.eg.dby一直这样的图片报错如何解决?
  • ¥15 下面三个文件分别是OFDM波形的数据,我的思路公式和我写的成像算法代码,有没有人能帮我改一改,如何解决?
  • ¥15 Ubuntu打开gazebo模型调不出来,如何解决?
  • ¥100 有chang请一位会arm和dsp的朋友解读一个工程
  • ¥50 求代做一个阿里云百炼的小实验
  • ¥15 查询优化:A表100000行,B表2000 行,内存页大小只有20页,运行时3页,设计两个表等值连接的最简单的算法
  • ¥15 led数码显示控制(标签-流程图)
  • ¥20 为什么在复位后出现错误帧
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部