#include "stdio.h"
#include"malloc.h"
typedef int ListItem;
void ItemShow(ListItem *x,int n)
{
for (int i=0;i<=n-1;++i)
{
if(i%5==0)
printf("\n");
printf("%8d ",x[i]);
}
}
typedef struct alist
{
int n;
int maxsize;
ListItem* table;
}alist;
/**********************************************/
/**********************************************/
typedef struct alist* List;
List ListInit(int size) // 表初始化
{
List L=(List)malloc(sizeof (*L));
L->table=(ListItem*)malloc(size*sizeof(ListItem));
L->maxsize=size;
L->n=0;
return L;
}
int ListEmpty(List L) //表是否为空
{
return L->n;
}
int ListLength(List L) //表的长度
{
return L->n;
}
/**********************************************/
/**********************************************/
int ListLocate(int x,List L) //查询元素x在表中的位置
{
int i;
for (i=0;i<L->n;++i)
{
if(L->table[i]==x) return ++i;
}
return 0;
}
ListItem ListRetrieve(int k, List L) //返回表k处的数据
{
if(k<0 || k> L->n)
{
printf(" Out of Bounds");
// return EOF;
}
return L->table[k-1];
}
int ListInsert(int k,int x,List L) //在k处插入元素x,但并不删除
{
int i;
if(k<1 || k>L->n)
{
printf("Out of Range");
return 0;
}
if(L->n==L->maxsize)
{
printf("Out of Space");
return 0;
}
for (i=L->n-1;i>=k-1;--i)
{
L->table[i+1]=L->table[i]; //k到n 的统一向后一个位置
}
L->table[k-1]=x;
L->n++;
return L->n;
}
ListItem ListDelete(int k,List L)
{
int i;
ListItem x; //返回删除处的值
if(k<1 || k> L->n)
printf("out of Range ");
x=L->table[k-1];
for (i=k-1;i<=L->n-1;++i)
{
L->table[i]=L->table[i+1];
}
L->n--;
return x;
}
void ListPrint(List L)
{
ItemShow(L->table,L->n);
}
int main ()
{
List MyList=ListInit(20);
for (int i=0; i<10;++i)
{
MyList->table[i]=i*i;
MyList->n++;
}
ListPrint(MyList);
for (int i=0; i<10;++i)
{
ListInsert(i+1,i*i*i,MyList);
}
ListPrint(MyList);
return 0;
}
由于没有封装,所以使用时小点,
初始化时应加入几个元素