哪个鱼友 帮我看看 这个顺序表基本运算的程序最后输出的那个函数出了什么问题 怎么输出的数组最后一个元素 总是和倒数第二个元素一样啊(在线等……急急急急急急)
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int len;
}list;
int main()
{
int list_init(list *L);
int list_insert(list *L,int i,int e);
int list_delete(list *L,int k);
int list_output(list *L);
list *L;
L=(list*)malloc(sizeof(list));
int i,k,e;
printf("请输入顺序链表中的所有元素:\n");
list_init(L);
printf("请输入要插入的位置:\n");
scanf("%d",&i);
printf("请输入要插入的数值:\n");
scanf("%d",&e);
list_insert(L,i,e);
printf("请输入要删除的数值的位置:\n");
scanf("%d",&k);
list_delete(L,k);
printf("请输出顺序链表中的所有元素:\n");
list_output(L);
return 0;
}
int list_init(list *L)
{
int i;
for(i=0;i<=MAXSIZE-1;i++)
{
scanf("%d",&(L->data[i]));
if((L->data[i])==0)
return 0;
L->len=i;
}
return 1;
}
int list_insert(list *L,int i,int e)
{
int j;
if(i<1||i>=MAXSIZE)
return 0;
for(j=L->len;j>=i-1;j--)
{
L->data[j+1]=L->data[j];
}
L->data[i-1]=e;
L->len++;
return 1;
}
int list_delete(list *L,int k)
{
if(k<1||k>MAXSIZE)
return 0;
int j;
for(j=k-1;j<(L->len)-1;j++)
{
L->data[j]=L->data[j+1];
}
L->len--;
return 1;
}
int list_output(list *L)
{
int j;
for(j=0;j<=L->len;j++)
printf("%d ",L->data[j]);
system("pause");
return 1;
}
|