1、创建顺序表的结构体
1、创建一个大小为10的顺序表
#define LISTSIZE 10
#define TRUE 1
#define FALSE 0
typedef int ElemType;
typedef int(*Compare)(ElemType,ElemType);
typedef struct SqList
{
ElemType data[LISTSIZE];
int length;
}SqList,*SqListPtr;
2、初始化函数
void InitList_Sq(SqListPtr sqlist) //初始化函数
{
if(sqlist == NULL) exit(0);
sqlist->length = 0;
}
3、判断顺序表是否为满函数
static int IsFull_Sq(SqListPtr sqlist)
{
if(sqlist->length==LISTSIZE)
{
return TRUE;
}
else
{
return FALSE;
}
}
4、三种不同插入函数(按位置插入、头插入、尾插入)
int InsertList_Sq_Pos(SqListPtr sqlist,ElemType val,int pos) //按位插入
{
if(sqlist == 0) exit(0);
if(IsFull_Sq(sqlist))
{
return FALSE;
}
if(pos<0 || pos>sqlist->length)
{
return FALSE;
}
int i=sqlist->length;
while(i>pos)
{
sqlist->data[i] = sqlist->data[i-1];
i--;
}
sqlist->data[i]=val;
sqlist->length++;
return TRUE;
}
int InsertList_Sq_Head(SqListPtr sqlist,ElemType val) //头插
{
if(sqlist == 0) exit(0);
if(IsFull_Sq(sqlist))
{
return FALSE;
}
int i=sqlist->length;
while(i !=0 )
{
sqlist->data[i]=sqlist->data[i-1];
i--;
}
sqlist->data[i]=val;
sqlist->length++;
return TRUE;
}
int InsertList_Sq_Tail(SqListPtr sqlist,ElemType val) //尾插
{
if(sqlist == NULL) exit(0);
if(IsFull_Sq(sqlist))
{
return FALSE;
}
sqlist->data[sqlist->length]=val;
sqlist->length++;
return TRUE;
}
5、三种删除方式函数(按位置删除、头删、尾删)
void DeleteList_Sq_Pos(SqListPtr sqlist,int pos) //按位置删除
{
if(sqlist == NULL) exit(0);
if(pos<0 || pos>=sqlist->length)
{
return ;
}
int i=pos;
while(i<sqlist->length-1)
{
sqlist->data[i]=sqlist->data[i+1];
i++;
}
sqlist->length--;
}
void DeleteList_Sq_Head(SqListPtr sqlist) //头删
{
if(sqlist == NULL) exit(0);
int i=0;
while(i<sqlist->length-1)
{
sqlist->data[i]=sqlist->data[i+1];
i++;
}
sqlist->length--;
}
void DeleteList_Sq_Tail(SqListPtr sqlist) //尾删
{
sqlist->data[sqlist->length--]=0;
sqlist->length--;
}
6、输出函数
void ShowList_Sq(SqListPtr sqlist) //输出
{
if(sqlist == NULL) exit(0);
int i=0;
for(i=0;i<sqlist->length;i++)
{
printf("%d ",sqlist->data[i]);
}
printf("\n");
}
7、清空和销毁函数
void ClearList_Sq(SqListPtr sqlist) //清空
{
if(sqlist == NULL) exit(0);
for(int i=0;i<sqlist->length;i++)
{
sqlist->data[i]=0;
}
sqlist->length=0;
}
void DestroyList_Sq(SqListPtr sqlist) // 销毁
{
if(sqlist == NULL)
exit(0);
for(int i=1;i<sqlist->length;i++)
{
sqlist->data[i]=0;
}
sqlist->length=0;
}
8、测试用例代码
int main()
{
SqList sq;
InitList_Sq(&sq);
for(int i=0;i<10;i++)
{
InsertList_Sq_Tail(&sq,i+1);
}
ShowList_Sq(&sq);
DeleteList_Sq_Pos(&sq,4);
ShowList_Sq(&sq);
ClearList_Sq(&sq);
ShowList_Sq(&sq);
DestroyList_Sq(&sq);
ShowList_Sq(&sq);
}
查看上一篇文章2048小游戏
查看下一篇文章