リニアテーブル順記憶構造
6826 ワード
//【 : , , , , ! !】
#include
#define MAXSIZE 20 //
#define TRUE 1
#define FALSE 0
typedef int ElemType; //Status bool , , TRUE,FALSE
typedef int Status; // ElemType , int
typedef struct //
{
ElemType data[MAXSIZE];
int length; //
}SeqList;
Status GetElem(SeqList L, int i, ElemType* e)// i e
{
if(i<=0||i> L.length)// i
return FALSE;
*e = L.data[i - 1];
return TRUE;
}
Status ListInsert(SeqList* L, int i, ElemType e)// i e
{
int k;
if (L->length == MAXSIZE)
{
return FALSE;
}
if (i <= 0 || i > L->length + 1)// i (1 +1 , )
{
return FALSE;
}
for (k = L->length;k >= i;k--)// i
{
L->data[k] = L->data[k-1];
}
L->data[i-1] = e;// , ,i-1
++ L->length;// 1
return TRUE;
}
Status ListDelete(SeqList* L, int i, ElemType *e)// i , e
{
int k;
if(L->length == 0)
return FALSE;
if (i < 1 || i > L->length)
return FALSE;
*e = L->data[i-1];
if (i < L->length)
{
for(k = i;k < L->length;k ++)
{
L->data[k-1] = L->data[k];
}
}
L->length--;
return TRUE;
}
//Status ListInsert(SeqList* L, int i, ElemType e)
//{
// int k;
//
// // ,
// if(L->length == MAXSIZE)
// return FALSE;
//
// // i (1 +1 , )
// if (i <= 0 || i > L->length + 1)
// return FALSE;
//
// //
// for (k = L->length; k >= i; k--)
// {
// L->data[k] = L->data[k-1];
// }
//
// // , ,i-1
// L->data[i-1] = e;
// ++L->length; // 1
//
// return TRUE;
//
//}
//
Status InitList(SeqList* L)
{
L->length = 0;
return TRUE;
}
//
void PrintList(SeqList L)
{
int i;
for(i=0; i< L.length; i++)
{
printf("%d\t",L.data[i]);
}
printf("
");
}
int main()
{
SeqList testList;
ElemType e;
InitList(&testList);// , 0
ListInsert(&testList,1,10);// 10
PrintList(testList);
ListInsert(&testList,2,20);// 20
PrintList(testList);
ListInsert(&testList,1,30);// 30
PrintList(testList);
GetElem(testList,1,&e);// e
printf(" %d
",e);
ListDelete(&testList,2,&e);
PrintList(testList);
return 0;
}