#include <stdio.h>
#include <assert.h>
typedef int DataType;
#define MAX_SIZE (100)
typedef struct SeqList {
DataType array[MAX_SIZE];
int size;
int i;
int index;
} SeqList ;
//初始化
void SeqListInit(SeqList *pSL)
{
assert(pSL != NULL);
pSL->size = 0;
}
// 尾部插入
void SListPushBack(SeqList *pSL, DataType data)
{
pSL->array[pSL->size++] = data;
}
//头部插入
void SListPushFront(SeqList *pSL, DataType data)
{
int i;
for(i=0; i<pSL->size; i++)
{
pSL->array[pSL->size-i]=pSL->array[pSL->size-i-1];
}
pSL->array[0]=data;
pSL->size++;
}
//给定位置插入
void SListInsert(SeqList *pSL,int pos, DataType data)
{
int i;
assert(pSL != NULL);
assert(pSL -> size < MAX_SIZE);
assert(pos>=0 &&pos<=pSL->size);
for(i=0; i<pSL->size-pos; i++)
{
pSL->array[pSL->size-i] = pSL->array[pSL->size-i-1];
}
pSL->array[pos]=data;
pSL->size++;
}
// 尾部删除
void SListPopBack(SeqList *pSL)
{
assert(pSL);
pSL->array[pSL->size] = NULL;
pSL->size--;
}
//头删
void SListPopFront(SeqList *pSL)
{
int i;
assert(pSL != NULL);
assert(pSL->size>0);
pSL->size--;
for(i=0; i<pSL->size; i++)
{
pSL->array[i] = pSL->array[i+1];
}
}
//指定位置删除
void SListErase(SeqList *pSL, int pos)
{
int i;
assert(pSL != NULL);
assert(pSL -> size < MAX_SIZE);
assert(pos>=0 &&pos<=pSL->size);
pSL->size--;
for(i=0; i<pSL->size-pos; i++)
{
pSL->array[pos+i] = pSL->array[pos+i+1];
}
}
// 按值查找,返回第一个找到的下标,如果没找到,返回 -1
int SeqListFind(SeqList *pSL, DataType data)
{
int i;
for(i=0; i<pSL->size; i++)
{
if(pSL->array[i]==data)
{return (i);}
}
return -1;
}
// 按值删除,只删遇到的第一个
void SeqListRemove(SeqList *pSL, DataType data)
{
int index;
index = SeqListFind(pSL,data);
if(index != -1)
{
SListErase(pSL,index);
}
}
// 按值删除,删除所有的
void SeqListRemoveAll(SeqList *pSL, DataType data)
{
int index;
while((index = SeqListFind(pSL,data)) != -1)
{
SListErase(pSL,index);
}
}
// 清空
void SeqListClear(SeqList *pSL)
{
int i;
assert(pSL);
for(i=0; i<pSL->size; i++)
{
pSL->array[i]=0;
}
}
// 判断是否为空,1 表示空, 0 表示不空
int SeqListEmpty(SeqList *pSL)
{
int index;
index = pSL->size >0?0:1;
printf("%d\n",index);
return 0;
}
// 判断是否为满,1表示满,0表示未满
int SeqListIsFull(SeqList *pSL)
{
int index;
index = pSL->size <MAX_SIZE?0:1;
printf("%d\n",index);
return 0;
}
//返回数量
int SeqListSize(SeqList *pSL)
{
int index;
index = pSL->size;
printf("%d\n",index);
return 0;
}
// 销毁
void SeqListDestroy(SeqList *pSL)
{
assert(pSL);
pSL->size = 0;
}
void SeqListPrint(SeqList *pSL)
{
int i = 0;
for(i=0; i<pSL->size; i++)
{
printf("%d ",pSL->array[i]);
}
printf("\n");
}
void TestSeqList()
{
SeqList s1;
SeqListInit(&s1);
SListPushBack(&s1,1);
SListPushBack(&s1,2);
SListPushBack(&s1,3);
SListPushBack(&s1,4);
SListPushBack(&s1,5);
SListPushBack(&s1,6);
SeqListPrint(&s1);
SeqList s2;
SeqListInit(&s2);
SListPushFront(&s2,1);
SListPushFront(&s2,2);
SListPushFront(&s2,3);
SListPushFront(&s2,4);
SListPushFront(&s2,5);
SListPushFront(&s2,6);
SListPushFront(&s2,7);
SeqListPrint(&s2);
SeqList s3;
SeqListInit(&s3);
SListPushBack(&s3,1);
SListPushBack(&s3,2);
SListPushBack(&s3,3);
SListPushBack(&s3,4);
SListPushBack(&s3,5);
SListPushBack(&s3,6);
SListPopBack(&s3);
SeqListPrint(&s3);
SeqList s4;
SeqListInit(&s4);
SListPushBack(&s4,1);
SListPushBack(&s4,2);
SListPushBack(&s4,3);
SListPushBack(&s4,4);
SListPushBack(&s4,5);
SListPushBack(&s4,6);
SListInsert(&s4,3,0);
SeqListPrint(&s4);
SeqList s5;
SeqListInit(&s5);
SListPushBack(&s5,1);
SListPushBack(&s5,2);
SListPushBack(&s5,3);
SListPushBack(&s5,4);
SListPushBack(&s5,5);
SListPushBack(&s5,6);
SListPopFront(&s5);
SeqListPrint(&s5);
SeqList s6;
SeqListInit(&s6);
SListPushBack(&s6,1);
SListPushBack(&s6,2);
SListPushBack(&s6,3);
SListPushBack(&s6,4);
SListPushBack(&s6,5);
SListPushBack(&s6,6);
SListErase(&s6,3);
SeqListPrint(&s6);
SeqList s7;
SeqListInit(&s7);
SListPushBack(&s7,2);
SListPushBack(&s7,1);
SListPushBack(&s7,3);
SListPushBack(&s7,1);
SListPushBack(&s7,1);
SListPushBack(&s7,3);
SeqListFind(&s7,1);
SeqListRemove(&s7,1);
SeqListPrint(&s7);
SeqList s8;
SeqListInit(&s8);
SListPushBack(&s8,2);
SListPushBack(&s8,1);
SListPushBack(&s8,3);
SListPushBack(&s8,1);
SListPushBack(&s8,1);
SListPushBack(&s8,3);
SeqListFind(&s8,1);
SeqListRemoveAll(&s8,1);
SeqListPrint(&s8);
SeqList s9;
SeqListInit(&s9);
SListPushBack(&s9,2);
SListPushBack(&s9,1);
SListPushBack(&s9,3);
SListPushBack(&s9,1);
SListPushBack(&s9,1);
SListPushBack(&s9,3);
SeqListClear(&s9);
SeqListPrint(&s9);
SeqList s10;
SeqListInit(&s10);
SListPushBack(&s10,2);
SListPushBack(&s10,1);
SListPushBack(&s10,3);
SListPushBack(&s10,1);
SListPushBack(&s10,1);
SListPushBack(&s10,3);
SeqListEmpty(&s10);
SeqList s11;
SeqListInit(&s11);
SListPushBack(&s11,2);
SListPushBack(&s11,1);
SListPushBack(&s11,3);
SListPushBack(&s11,1);
SListPushBack(&s11,1);
SListPushBack(&s11,3);
SeqListIsFull(&s11);
SeqList s12;
SeqListInit(&s12);
SListPushBack(&s12,2);
SListPushBack(&s12,1);
SListPushBack(&s12,3);
SListPushBack(&s12,1);
SListPushBack(&s12,1);
SListPushBack(&s12,3);
SeqListSize(&s12);
SeqList s13;
SeqListInit(&s13);
SListPushBack(&s13,2);
SListPushBack(&s13,1);
SListPushBack(&s13,3);
SListPushBack(&s13,1);
SListPushBack(&s13,1);
SListPushBack(&s13,3);
SeqListDestroy(&s13);
}
int main()
{
TestSeqList();
return 0;
}
顺序表的相关操作(初始化,插入,删除,清空,销毁)
猜你喜欢
转载自blog.csdn.net/zr147258369/article/details/80780071
今日推荐
周排行