不想起名字a 发表于 2021-3-8 18:49:21

为什么定义一个顺序表就能正常运行?定义两个就输入一个数据就退出了。跪求大佬帮忙

#include<stdio.h>
#define MaxLen 100
typedef int DataType;
typedef struct
{
        DataType data;
        int length;
}SeqList;
void InitList(SeqList *L);
void AddList(SeqList *L);
void PrintfList(SeqList L);
void GetLength(SeqList L);
DataType GetNode(SeqList L,int i);
int Locate(SeqList L,DataType e);
void InsertList(SeqList *L,int i,DataType e);
void DeleteList(SeqList *L,int i);
int main()
{
        SeqList A;
        SeqList B;
//        int i;
//        DataType x;
        InitList(&A);
        AddList(&A);
        PrintfList(A);
        InitList(&B);
        AddList(&B);
        PrintfList(B);
//        GetLength(L);
//        i=Locate(L,100);
//        x=GetNode(L,5);
//        if(x!=-1)
//        {
//                printf("第五个数据元素的值为%d\n",x);
//        }
//        if(i)
//        {
//                printf("100是序号为%d的数据元素的值\n",i);
//        }
//        else
//        {
//                printf("元素的值等于100的数据不存在\n");
//        }
//        InsertList(&L,4,100);
//        PrintfList(L);
//        DeleteList(&L,5);
//        PrintfList(L);
        return 0;
}
void InitList(SeqList *L)
{
        L->length==0;
        return;
}
void AddList(SeqList *L)
{
        int x;
        char ch;
        do
        {
                if(L->length==MaxLen)
        {
                printf("顺序表已满。\n");
                return;
        }
        printf("请输入存放到顺序表中的数据元素的值\n");
        scanf("%d",&x);
        getchar();
        L->data=x;
        printf("是否继续输入数据元素的值(Y/N)\n");
        scanf("%c",&ch);
        getchar();
        }
        while(ch=='Y'||ch=='y');
}
void PrintfList(SeqList L)
{
        int i;
        for(i=0;i<L.length;i++)
        {
                printf("(%d)%d\t\n",i+1,L.data);
        }
        return;
}
void GetLength(SeqList L)
{
        printf("%d",L.length);
        return;
}
DataType GetNode(SeqList L,int i)
{
        if(i<1||i>L.length+1)
        {
                printf("所查找的数据不存在\n");
                return -1;
        }
        return L.data;
}
int Locate(SeqList L,DataType e)
{
        int i;
        for(i=0;i<L.length;i++)
        {
                if(L.data==e)
                {
                        return i+1;
                        i++;
                }
        }
        return 0;
}
void InsertList(SeqList *L,int i,DataType e)
{
        int j;
        if(L->length==MaxLen)
        {
                printf("顺序表已满!");
                return;
        }
        if(i<1||i>L->length+1)
        {
                printf("插入位置错误");
                return;
        }
        for(j=L->length;j>=i;j--)
        {
                L->data=L->data;
        }
        L->data=e;
        L->length++;
        return;
}
void DeleteList(SeqList *L,int i)
{
        int j;
        if(i<1||i>L->length)
        {
                printf("位置错误!");
        }
        for(j=i;j<L->length;j++)
        {
                L->data=L->data;
        }
        L->length--;
        return;
}

巴巴鲁 发表于 2021-3-8 19:57:05

void InitList(SeqList *L)
{
      L->length=0; // 两个双等号?
      return;
}

不想起名字a 发表于 2021-3-8 20:47:02

巴巴鲁 发表于 2021-3-8 19:57


果然
感谢大佬
页: [1]
查看完整版本: 为什么定义一个顺序表就能正常运行?定义两个就输入一个数据就退出了。跪求大佬帮忙