新人求大佬数据结构帮忙

新人不太会改bug,运行不了,求大佬帮助,谢谢!

#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define List_Init_Size 100
#define List_Increment 100
typedef  Status;
typedef  Elemtype;

typedef struct Sqlist{

      Elemtype * slist;

      int length;         

      int listsize;     

}Sqlist;/*顺序表*/

typedef struct LNode{

      Elemtype data;

      struct LNode * next;

}LNode,*LinkList;/*链表*/

LinkList Create_Single_List(int n)
{
    LNode *p,*q,*head;
    int x,i;
    if(n<=0)
        return ERROR;
    head=(LinkList)malloc(sizeof(LNode));
    head->next=NULL;
    q=head;
    for(i=1;i<=n;i++)
    {
        p=(LinkList)malloc(sizeof(LNode));
        printf("please input data %d:",i);
        scanf("%d",&x);
        p->data=x;
        p->next=q->next;
        q->next=p;
        q=p;
    }
    return head;
}/*建立带头结点的单链表*/

void Print_Single_List(LinkList L)
{
    L=L->next;
    while(L)
    {
        printf("%4d",L->data);
        L=L->next;
    }
}/*输出带头结点的单链表*/
LinkList CreatexhList(int n)

{

      LNode *head,*p,*q;

      int i,x;

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

      head->next=NULL;

      q=head;

      for(i=1;i<=n;i++)

      {

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

            printf("please input data %d:",i);

            scanf("%d",&x);

            p->data=x;

            p->next=q->next;

            q->next=p;

            q=p;

      }

      p->next=head;

      return head;

}//建立循环单链表

void PrintListxh(LinkList L)

{

      LNode *p;

      p=L->next;

      while(p->next!=L)

      {

            printf("%4d",p->data);

            p=p->next;

      }

      printf("%4d\n",p->data);

}/*输出循环单链表*/

Status InitList(Sqlist * s)

{

      s->slist=(Elemtype *)malloc(List_Init_Size * sizeof(Elemtype));

      if(!s->slist)

            return ERROR;

      s->length = 0;   

      s->listsize = List_Init_Size;   

      return OK;

}/*初始化顺序表*/

Status CreateList(Sqlist * s,int n)
{
    Elemtype x;
    int i;
    for(i=0;i<n;i++)
    {
        printf("please input data %d: ",i+1);
        scanf("%d",&x);
        if(!InsertList(s,i+1,x))
            return ERROR;
    }
    return OK;
} /*建立顺序表*/

Status InsertList(Sqlist *s,int i,int k)

{

      int j;

      if(i<1||i>s->length+1)

            return ERROR;

      if(s->length>=s->listsize)   /*如果空间不足,则继续分配空间 */

      {

            s->slist=(Elemtype *)realloc(s->slist,(s->listsize+List_Increment)*sizeof(Elemtype));

      }

      if(!s->slist)

            return ERROR;

      s->listsize+=List_Increment;

      for(j=s->length-1;j>=i-1;j--)

      {

            s->slist[j+1]=s->slist[j];   /*元素后移 */

      }

      s->slist[i-1]=k;   /*在第i个位置插入元素 */

      s->length++;

      return OK;

}

Status PrintList(Sqlist *s)
{
    int i=1;
    while(i<=s->length)
    {
        printf("%4d",s->slist[i-1]);
        i++;
    }
    return OK;
}/*-输出顺序表*/
LinkList lianjie(LinkList L1,LinkList L2)

{

      LNode * p,* q;

      q=L1->next;

      p=L2->next;

      L2->next=q;

      while(q->next!=L1)

            q=q->next;

      q->next=p;

      free(L1);

      return L2;

}//连接两个循环单链表

Status InsertkList(Sqlist * s,int k)

{

      int i=1;

      while(i<=s->length)

      {

            if(s->slist[i-1]<k)

                  i++;

            else

                  break;

      }

      InsertList(s,i,k);

      return OK;

}//插入k,使得顺序表仍然递增

Status ReverseLsit(Sqlist * s)

{

      int i,t;

      for(i=0;i<(s->length)/2;i++)

      {

            t=s->slist[i];

            s->slist[i]=s->slist[s->length-i-1];

            s->slist[s->length-i-1]=t;

      }

      return OK;

}

Status ReversedanList(LinkList L)

{

      LNode * p,* q;

      p=L->next;

      L->next=NULL;

      while(p!=NULL)

      {

            q=p;

            p=p->next;

            q->next=L->next;

            L->next=q;

      }

      return OK;

}//逆置单链表

Status DeleteList(LinkList L,int i)

{

      int j=0;

      LinkList p=L,q;

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

            return ERROR;

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

      {

            p=p->next;

            j++;

      }

      q=p->next;/*第i个*/

      p->next=q->next;

      free(q);

      return OK;

}

LinkList DeleteListhead(LinkList L)

{

      LinkList p=L,q;

      q=L->next;

      while(p->next!=L)

      {

            p=p->next;

      }

      p->next=q;

      free(L);

      return q;

}

int main()
{
    LinkList L=NULL,L1=NULL,L2=NULL;
    Sqlist s,valist;
    int x,n,m;
    printf("please input x:");
    scanf("%d",&x);
    switch(x)
    {
        case 1 :/*1 单链表*/
            printf("please input n: ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-Create Single LinkList:\n");
                L=Create_Single_List(n);           /*建立带头结点的单链表*/
                printf("\n2-Print Single LinkList:\n");
                Print_Single_List(L);              /*输出带头结点的单链表*/
            };break;
        case 2 :/*2 循环单链表*/
            printf("please input n: ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-Create Circule LinkList:\n");
                L=Create_Circule_List(n);          /*建立带头结点的循环单链表*/
                printf("\n2-Print Circule LinkList:\n");
                PrintList_Circule(L);              /*输出带头结点的循环单链表*/
            };break;
        case 3 :/*3 递增顺序表*/
            printf("please input n: ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-InitList and CreateList :\n");
                InitList(&s);
                CreateList(&s,n);
                printf("\n2-Print SqList :\n");
                PrintList(&s);
            };break;
        case 4 :/*4 连接两个循环单链表*/
            printf("Connect L1 and L2 LinkList :\n");
            printf("please input m : ");
            scanf("%d",&m);
            if(m>0)
            {
                printf("\n1-Create Circule LinkList:\n");
                L1=Create_Circule_List(m);
                printf("\n2-Print Circule LinkList:\n");
                PrintList_Circule(L1);
            }/*建立循环链表L1*/
            printf("please input n : ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-Create Circule LinkList:\n");
                L2=Create_Circule_List(n);
                printf("\n2-Print Circule LinkList:\n");
                PrintList_Circule(L2);
            }/*建立循环链表L2*/
            if(m<n)
            {
                printf("Print Connect L1 and L2 LinkList :\n");
                L2=Connect(L1,L2);
                PrintList_Circule(L2);
            }
            else
            {
                printf("Print Connect L1 and L2 LinkList :\n");
                L2=Connect(L2,L1);
                PrintList_Circule(L2);
            };break;
        case 5 :/*5 插入x使顺序表仍递增 */
            printf("please input n: ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-InitList and CreateList :\n");
                InitList(&valist);
                CreateList(&valist,n);
                printf("\n2-Print SqList :\n");
                PrintList(&valist);
                printf("\n3-please input data x : ");
                scanf("%d",&x);
                printf("\n4-Create and Print valist:\n");
                Insert_x_List(&valist,x);
                PrintList(&valist);
            } ;break;
        case 6 :/*顺序表的就地逆置*/
            printf("please input n : ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-Creata SqList : \n");
                InitList(&s);
                CreateList(&s, n);
                printf("\n2-Print SqList : \n");
                PrintList(&s);
                printf("\n3-Print the Reverse SqList :\n");
                ReverseLsit(&s);
                PrintList(&s);
            };break;
        case 7 :/*单链表的就地逆置*/
            printf("please input n : ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-Create Single Linklist : \n");
                L=Create_Single_List(n);
                printf("\n2-Print Single Linklist :\n");
                Print_Single_List(L);
                printf("\n3-Print Reverse Single Linklist :\n");
                Reverse_Single_List(L);
                Print_Single_List(L);
            }break;
        case 8 :/*单链表中,节点的删除 */
            printf("please input n : ");
            scanf("%d",&n);
            if(n>0)
            {
                printf("\n1-Create Single Linklist : \n");
                L=Create_Single_List(n);
                printf("\n2-Print Single Linklist :\n");
                Print_Single_List(L);
                printf("\n3-please input the delete data location : ");
                scanf("%d",&x);
                DeleteList(L,x);
                printf("\n4-Print Single Linklist :\n");
                Print_Single_List(L);
            }break;
        case 9 :
            return 0;
    }
for(i=0;;i++){
      printf("1-输出带头节点的单链表\n");
      printf("2-输出带头节点的循环单链表\n");
      printf("3-输出递增有序的顺序表\n");
      printf("4-输出两个带头节点的循环链表的合并\n");
      printf("5-输出有序顺序表的插入\n");
      printf("6-输出顺序表的就地逆置\n");
      printf("7-输出单链表的就地逆置\n");
      printf("8-输出单链表中节点的删除\n");
      printf("\n");
      printf("请选择 二级菜单的k:\n");
      }
printf("\n");
}

return 0;

}

参考GPT和自己的思路:

根据代码中的注释,该程序包含以下几个功能:

1.建立带头结点的单链表

2.建立带头结点的循环单链表

3.建立递增有序的顺序表

4.连接两个带头结点的循环链表

5.有序顺序表的插入

6.顺序表的就地逆置

7.单链表的就地逆置

8.单链表中节点的删除

针对“新人不太会改bug,运行不了,求大佬帮助,谢谢!”这个问题,需要更详细的错误信息和运行环境来进行分析和解决。可以试着检查以下几个方面:

1.是否正确安装和配置了编译环境,例如编译器和相关库文件。

2.是否正确连接了所需的库文件。

3.代码中是否存在语法错误或逻辑错误。

4.是否正确初始化变量和输入参数。

另外,建议在代码中添加注释和调试信息,以便更好地找到问题和进行调整。

参考GPT和自己的思路:

这段代码存在一些问题,但是没有具体的错误信息和上下文,无法准确分析和解决问题。建议在出现问题时,提供具体的错误信息、问题场景和代码上下文,以便更好的定位问题和解决问题。此外,新人应该多学习并练习调试代码的能力,以便更好的排除问题。