honglili_ya 2021-04-08 21:19 采纳率: 25%
浏览 14

为什么我的按序号查找的函数进不去啊

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define  ERROR 0
typedef struct Lnode{
int data;    //数据域
struct Lnode *next;  //指针域
}Lnode,*Linklist;  //*Linklist为Lnode类型的指针

int   CreateList(Linklist L,int n)  //头插法
{
 Linklist p,q;
    p = L;//第一步,取到头结点,两个指针指向同一内存,改变p指向的内存,L指向的内存不变,L仍为头结点
    printf("请输入%d个数:\n", n);
    for (int i = 1; i <= n; i++)
 {
        q = (Linklist)malloc(sizeof(int));
        if (!p)
  {
            printf("p的初始化出现问题!\n");
            return 0;
        }
              scanf("%d", &q->data);
         q->next = p->next;//第二步链接两个结点
         p->next = q;//第二步链接两个结点
         p = q;//关键的一步,更换位置,进行下次循环

        }
        return 1;
 }

     int  ListInsert(Linklist *L,int i,int *e)//单链表的插入在第i个位置插入元素e
    {
     int j;
     Lnode *p;
     p=L;
     j=0;
     while(p->next&&j<i-1)//遍历并且进行第i-1个位置的查找
     {
         p=p->next;
         ++j;
     }
     if(!p||j>i-1)//如果找不到的话就返回error
     {
         return ERROR;
     }
     Lnode *S=(Linklist)malloc(sizeof(Lnode));
     S->data=e;
     S->next=p->next;
     p->next=S;
     }



     int ListDelete(Linklist *L,int i)//单链表的删除
     {
         int j;
         Lnode *p,*q;
         p=L;
         j=0;
         while(p->next&&j<i-1)//寻找第i-1个元素,应该是找
         {
             p=p->next;
             ++j;
         }
         if(!p||j>i-1)//删除位置不合理,找不到元素
            {
                return ERROR;
            }
            q=p->next;//删除并释放结点
            p->next=q->next;
            free(q);
     }

     Lnode *Locate(Linklist L,int i,int a)
     {   //按序号查找  定位
    Lnode *p;
    int j;
    if(i==0||i>a)
    {
        printf("查找位置错误");
                return L;
    }
    p=L->next;
   for(j=0;j<i;j++)
   {
       p=p->next;
   }
   printf("%d",p->data);
return 0;
}

int getLinklist(Linklist L,int a){    //打印链表
    int n=a;
   if(!L->next)
   {
       printf("链表没有节点,不能输出");
       return 0;
   }
   Linklist p;
   p=L->next;
  for(int i=0;i<n;i++)
{
       printf("%d ",p->data);
       p=p->next;
   }
   return 0;
}

int main()

{
    int a,b;
    Linklist *L=(Linklist*)malloc(sizeof(Lnode));
 printf("请问您想输入几个数:");
 scanf("%d",&a);
CreateList(L,a);

    int i,select;
  int *e;


printf("宏立:请输入您想完成的操作\n");
printf("插入操作请出入1;删除操作请输入2,按序号查找请输入3,\n");
scanf("%d",&select);
if(select==1)
{
     printf("请输入想插入的位置和想插入的数");
    scanf("%d %d",&i,&e);
     ListInsert(L,i,e);
      getLinklist(L,a+1);
}
if(select==2)
{
    printf("请输入想删除的位置");
    scanf("%d",&i);
    ListDelete(L,i);
     getLinklist(L,a-1);
}
if(select==3)
{printf("请输入你要查找的数的序号:");
    scanf("%d",&i);
    Lnode *Locate(L,i,a);
}
    return 0;
}

为什么按序号查找那个函数读不进去啊

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 16:39
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,