线性表——顺序存储问题
// 2013.6.29
//linear list
#include "stdio.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXLENGTH 8
// Creat linear list
typedef struct
{
int data[MAXLENGTH];
int length;
}Sqlist;
//get list elements
//make sure element is not NULL when calling
int getElement(Sqlist *L,int i,int *e)
{
//printf("\ngetElement\n");
printf("length is %d\n",L->length);
if (L->length==0||i<0||i>=L->length)
return ERROR;
*e=L->data[i-1];
return OK;
}
//insert opration
int ListInset(Sqlist *L,int i,int e)
{
//printf("\ninsert\n");
int k;
printf("length is %d\n",L->length);
if (L->length==0 || i<0 || i>L->length || L->length>=MAXLENGTH)
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;
}
//Delete opration
int ListDelete(Sqlist *L,int i)
{
//printf("\ndelete\n");
int k;
printf("length is %d\n",L->length);
if (L->length ==0 || i<0 || i>L->length || L->length>=MAXLENGTH)
return ERROR;
if (i<L->length)
{
for(k=i;k<L->length-1;k++)
{
L->data[k]=L->data[k+1];
}
}
L->data[L->length-1]='\0';
L->length--;
return OK;
}
int main()
{
Sqlist L=
{
{3,1,5,7,12,78,34},
7
};
//printf("list lenth : %d\n",L.length);
int *element=0;
//e=&test;
if (OK==getElement(&L,3,element))
{
printf("list get 3 : %d\n",*element);
}
if (OK==ListInset(&L,7,520))
{
printf("list insert 7 ok!\n");
}
if (OK==getElement(&L,7,element))
{
printf("list get 7 : %d\n",*element);
}
if (OK==ListInset(&L,3,520))
{
printf("list insert 3 ok!\n");
}
if (OK==getElement(&L,3,element))
{
printf("list get 3 : %d\n",*element);
}
if (OK==ListDelete(&L,3))
{
printf("list delete 3 ok!\n");
}
if (OK==getElement(&L,3,element))
{
printf("list get 3 : %d\n",*element);
}
if (OK==ListDelete(&L,6))
{
printf("list delete 6 ok!\n");
}
if (OK==getElement(&L,6,element))
{
printf("list get 6:%d\n",*element);
}
else
{
printf("list get ERROR!\n");
}
}

int *element=0;
//e=&test;
if (OK==getElement(&L,3,element))
int getElement(Sqlist *L,int i,int *e)
{
//printf("\ngetElement\n");
printf("length is %d\n",L->length);
if (L->length==0
[解决办法]
i<0
[解决办法]
i>=L->length)
return ERROR;
*e=L->data[i-1];