#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 20
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int ELemtype;
typedef int Status;
typedef struct ListNode
{
ELemtype data[MAXSIZE];
int length;
}*Sqlist;
Sqlist Initlist()
{
Sqlist L;
L = (Sqlist)malloc(sizeof(struct ListNode));
L->length= 0;
return L;
}
Status Output(Sqlist L)
{
int i;
for (i = 0; i < L->length; i++)
{
printf("%d\n", L->data[i]);
}
printf("\n");
return OK;
}
Status GetELem(Sqlist L, int i,ELemtype *e)
{
if ((L->length = 0) || i<1 || i>L->length)
{
return ERROR;
}
*e = L->data[i-1];
return OK;
}
Status ListInsert(Sqlist L,int i,ELemtype e)
{
int k;
if (L->length == MAXSIZE)
return ERROR;
if (i<1 || i>L->length + 1)
return ERROR;
if (i <= L->length)
{
for (k = L->length-1;k>=i-1;k--)
{
L->data[k + 1] = L->data[k];
}
}
L->data[i - 1] = e;
L->length++;
return OK;
}
Status ListDelet(Sqlist L, int i,ELemtype *e)
{
int k;
if (L->length = 0)
return ERROR;
if (i > L->length || i < 1)
return ERROR;
*e = L->data[i];
if (i < L->length)
{
for (k = i; k < L->length; k++)
{
L->data[k - 1] = L->data[k];
}
}
L->length--;
return OK;
}
int main()
{
Sqlist L;
L =Initlist();
int n, i, x;
printf("please input the number of the line\n");
scanf("%d", &n);
printf("please input every number\n");
for (i = 1; i <= n; i++)
{
scanf("%d", &x);
ListInsert(L, i, x);
}
printf("the result of line:\n");
Output(L);
int e, j;
printf("input a number of the number\n");
scanf("%d", &j);
GetELem(L, j, &e);
printf("the %d number is %d\n", j, e);
int k, e1;
printf("请输入要删除的元素序号\n");
scanf("%d", &k);
ListDelet(L, k, &e1);
printf("删除后的结果为:\n");
Output(L);
printf("the %d is leave\n", e1);
}
为什么e的值是乱码?
为什么进行删除操作后没有打印结果?