此代码只能执行main函数中的请输入整数和scanf 输入整数后 程序就直接结束了 然后自己调试编译器会报错
请大佬指点下
#include <stdio.h>
#include <malloc.h>
#define LISTSIZE 100
typedef int DataType;//将int 重新定义一个名字
typedef struct
{
DataType items[LISTSIZE];
int length;
}SqList;//顺序表的结构体定义
int ListEmpty(SqList* L);//判断顺序表是否为空
int ListInsert(SqList* L, int pos, DataType item);//顺序表的插入
int ListDelete(SqList* L, int pos, DataType* item);//顺序表的删除
int Find(SqList* L, DataType item);//顺序表的查找
void InitList(SqList* L); //顺序表输入形成顺序表
int ListEmpty(SqList* L)//判断顺序表是否为空
{
if (L->length <= 0)
{
return 1;
}
else
{
return 0;
}
}
int ListInsert(SqList* L, int pos, DataType item)//顺序表的插入
{
int i;
if (L->length >= LISTSIZE)
{
printf("顺序表已满,无法插入");
return 0;
}
if (pos <= 0 || pos >= L->length + 1)
{
printf("插入的位置不合法");
return 0;
}
for (i = L->length - 1; i >= pos - 1; i--)
{
L->items[i + 1] = L->items[i];
}
L->items[pos - 1] = item;
L->length++;
return 1;
}
int ListDelete(SqList* L, int pos, DataType* item)//顺序表的删除
{
int i;
if (ListEmpty(L))
{
printf("顺序表为空,无法删除");
return 0;
}
if (pos <= 0 || pos > L->length)
{
printf("删除的位置不合法");
return 0;
}
*item = L->items[pos - 1];
for (i = pos; i < L->length; i++)
{
L->items[pos - 1] = L->items[pos];
}
L->length--;
}
int Find(SqList* L , DataType item)//顺序表的查找
{
int pos=0;
if (ListEmpty(L))
{
printf("顺序表为空无法查找");
return 0;
}
while (pos < L->length && L->items[pos] != item)
{
pos++;
}
if (pos < L->length)
{
return pos + 1;
}
else
{
return 0;
}
}
void InitList(SqList * L) //顺序表输入形成顺序表
{
int i;
for (i = 0; i <= L->length; i++)
{
scanf("%d", &i);
L->items[i] = i;
}
}
int main(void)
{
DataType* item;
int i, j, n, pos;
SqList* L;
printf("请输入要输入整数的个数n:");
scanf("%d", &n);
L->length = n;
InitList(L);
for (i = 0; i <=L->length; i++)
{
printf("%d", L->items[i]);
} //依次打印在屏幕上
printf("请选择你想要实现的功能:1-删除 2-插入 3-查找");
scanf("%d", &j);
switch (j)
{
case1:
printf("请输入你想删除元素的值和位置:(两数中间用空格隔开)");
scanf("%d %d", &pos, &*item);
ListDelete(L,pos,item);
for (i = 0; i <= L->length-1; i++)
{
printf("%d",L->items[i]);
}
break;
case2:
printf("请输入你想插入元素的值和位置:(两数中间用空格隔开)");
scanf("%d %d", &pos, &*item);
ListInsert(L, pos, *item);
for (i = 0; i <= L->length - 1; i++)
{
printf("%d", L->items[i]);
}
break;
case3:
printf("请输入你想查找元素的值");
scanf("%d", &*item);
Find(L, *item);
for (i = 0; i <= L->length - 1; i++)
{
printf("%d", L->items[i]);
}
break;
default:
printf("无此功能");
break;
}
return 2;
}
程序是正常的,在等你输入数据,加了一行代码,你运行看看:printf("请输入第%d个值",i+1);
void InitList(SqList * L) //顺序表输入形成顺序表
{
int i;
for (i = 0; i <= L->length; i++)
{
printf("请输入第%d个值",i+1);
scanf("%d", &i);
L->items[i] = i;
}
}
105行 指针L没初始化
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html