这是一个简单的顺序表,但在运行时总是与我的期望不符。
我想要他进入for循环,进行插入,但是总是从“插入不合法中”跳出。
还望大佬解释解释。
```c
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
//将data和length封装成一个结构体作为顺序表的类型
typedef struct node {
int data[MAXSIZE];
int length;
}seqlist,*pseqlist;
//构造一个空的顺序表,返回指针
pseqlist start_list()
{
pseqlist P;
P = (pseqlist)malloc(sizeof(seqlist));
if (!P)
perror("分配空间失败");
else
P->length = 0;
return (P);
}
//顺序表的插入
int insert_seqlist(pseqlist A, int i, int x) {
int j;
if (!A)
{
printf("表不存在\n");
return -2;
}
if (A->length >= MAXSIZE)
{
printf("表溢出\n");
return -1;
}
if (i<1 || i>A->length +1)
{
printf("插入不合法\n");
return 0;
}
for (j = A->length - 1; j >= i - 1; j--) {
A->data[j + 1] = A->data[j];
}
A->data[i - 1] = x;
A->length++;
return 1;
}
//顺序表的数值输出
void put_seqlist(pseqlist A)
{
for (int j = 0; j < A->length; j++) {
printf("%4d", A->data[j]);
}
printf("\n");
}
int main()
{
int digit;//插入数据的个数
int number;//插入的数据
int i;
pseqlist A = start_list;
printf("输入你要插入A的数据个数\n");
scanf("%d", &digit);
printf("输入你要插入A的数据\n");
for ( i = 1; i <= digit; i++)
{
scanf("%d", &number);
insert_seqlist(A, i, number);
}
put_seqlist(A);
return 0;
}
```
在main里面,初始化写错了