线性表回顾
相同类型 数据有限排列
可逐项访问 顺序存储
#define MAXSIZE 50
typedef struct LIST
{
int data[MAXSIZE];//数组
int length;
}List;
//初始化 建立一个新的线性表
void ListInit(List* L)
{
L->length = 0;
memeset(L->data,0,sizeof(L->data));
}
//线性表是否为空
int ListEmpty(SqList L)
{
if(L.length==0)
return 1;
else
return 0;
}
//清空线性表
void ListClear(List *L)
{
ListInit(L);
}
//插入元素
void ListInsert(List *L,int pos ,ElemType e)
{
for(int i=L->length-1;i>=pos;--i)
{
L->data[i+1] = L->data[i];
}
L->data[pos] =e;
L->length++;
}
//删除元素
void ListDelete(List* L,Int pos,ElemType *e)
{
if(pos <0)||pos>=L->length)
{
return;
}
if(L->length == 0)
{
return;
}
*e = (void*)L->data[pos];
for(int i=pos +1;i<L->length;++i)
{
L->data[i+1] = L->data[i];
}
L->length--;
}
//获取线性表的长度
int ListLength(List L)
{
return L.length;
}
队列
队头删除 队尾插入
//队列中元素的删除
void* LinkQueue_Retrieve(LinkQueue* queue)
{
int ret = 0;
TLinkQueueNode *tmp = NULL;
tmp = (TLinkQueueNode *)LinkList_Delete(queue,0);
if(tmp == NULL)
{
return NULL;
}
ret = tmp ->item;
if(tmp!=NULL)
{
delete tmp;//缓存
}
return NULL;
}
//获取头部数据
void* LinkQueue_Header(LinkQueue* queue)
{
TLinkQueueNode *tmp= NULL;
void *ret=NULL;
tmp=LinkList_Get(queue,0);
if(tmp == NULL)
{
return NULL;
}
return tmp->item;
}
//求队列的长度
int LinkQueue_Length(LinkQueue* queue)
{
return LinkList_Length(queue);
}