顺序表--静态
#include<stdio.h>
#define MaxSize 5
typedef int ElemType;
typedef struct List {
ElemType data[MaxSize];
int len;
}SqList;
void InitList(SqList& L)
{
L.len = 0;
}
bool InsertList(SqList& L, ElemType i, ElemType e)
{
int j;
if (i<1 || i>L.len + 1) return false;
if (L.len >= MaxSize) return false;
for (j = L.len; j >= i; j--)
L.data[j] = L.data[j - 1];
L.data[j] = e;
L.len++;
return true;
}
bool PrintList(SqList L)
{
if (L.len <= 0) return false;
for (int i = 0; i < L.len; i++)
{
printf("%4d", L.data[i]);
}
printf("\n");
return true;
}
bool ListDelete(SqList& L, ElemType i, ElemType& e)
{
if (i<1 || i>L.len) return false;
if (L.len < 1) return false;
e = L.data[i - 1];
for (int j = i - 1; j < L.len - 1; j++)
{
L.data[j] = L.data[j + 1];
}
L.len--;
return true;
}
int LocateElem(SqList L, ElemType e)
{
if (L.len < 1) return 0;
for (int j = 0; j < L.len; j++)
{
if (L.data[j] == e)
return j + 1;
}
return 0;
}
int GetElem(SqList L, int i)
{
if (L.len < 1||i>L.len) return false;
return L.data[i - 1];
}
int main()
{
SqList L;
bool ret;
InitList(L);
L.data[0] = 1;
L.data[1] = 5;
L.data[2] = 3;
L.len = 3;
PrintList(L);
ret = InsertList(L, 2, 60);
PrintList(L);
if (ret) printf("insert succseeful\n");
else printf("insert fail\n");
int e=-1;
ret=ListDelete(L, 2, e);
if (ret)
{
printf("delete succseeful, e=%d\n", e);
PrintList(L);
}
else printf("delete fail\n");
int Locate_i = LocateElem(L, 5);
if (Locate_i)
printf("locate succseeful, Locate_i=%d\n", Locate_i);
else printf("NO HAVE\n");
int i=2;
printf("elem_%d=%d", i,GetElem(L,i));
return 0;
}