数据结构顺序表的操作

此代码只能执行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