版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/better12038/article/details/80616710
/////////seqlist.h
#pragma once
#ifndef __SEQ_LIST_H__
#define __SEQ_LIST_H__
#include <assert.h>
#include <stdio.h>
#include <windows.h>
typedef int DataType;
#define MAX_SIZE (100)
typedef struct SeqList
{
DataType array[MAX_SIZE];
int size;
} SeqList;
//初始化
void SeqListinit(SeqList *pSL);
//增
void PushBack(SeqList *pSL, DataType data);
void PushFront(SeqList *pSL, DataType data);
void Insert(SeqList *pSL, int pos, DataType data);
//删
void PopBack(SeqList *pSL);
void PopFront(SeqList *pSL);
void Erase(SeqList *pSL, int pos);
void Remove(SeqList *pSL, DataType data);
void RemoveAll(SeqList *pSL, DataType data);
//查
int Find(SeqList *pSL, DataType data);
//改
void Update(SeqList *pSL, int index, DataType data);
int SeqListEmpty(const SeqList *pSL);
int SeqListFull(const SeqList *pSL);
int SeqListPrint(SeqList *pSL);
`
void SeqListDestroy(SeqList * pSL);
#endif
//////////////seqlist.c
#include "seqlist.h"
//初始化
void SeqListinit(SeqList *pSL)
{
assert(pSL != NULL);
pSL->size = 0;
}
//尾插
void PushBack(SeqList *pSL, DataType data)
{
Insert(pSL, pSL ->size, data);
}
//头插
void PushFront(SeqList *pSL, DataType data)
{
Insert(pSL, 0, data);
}
//按位置插
void Insert(SeqList *pSL, int pos, DataType data)
{
assert(pSL != NULL);
assert(pSL->size < MAX_SIZE);
assert(pos >= 0 && pos <= MAX_SIZE);
int i;
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 PopBack(SeqList *pSL)
{
Erase(pSL, pSL->size-1);
}
//头删
void PopFront(SeqList *pSL)
{
Erase(pSL, 0);
}
//按位置删
void Erase(SeqList *pSL, int pos)
{
assert(pSL != NULL);
assert(pSL->size > 0);
int i;
pSL->size--;
for (i = 0; i < pSL->size - pos; i++)
{
pSL->array[pos + i] = pSL->array[pos + i + 1];
}
}
//找
int Find(SeqList *pSL, DataType data)
{
int i;
for (i = 0; i < pSL->size; i++)
{
if (pSL->array[i] == data)
return i;
}
return -1;
}
//按数据删第一个遇到的
void Remove(SeqList *pSL, DataType data)
{
int index = Find(pSL, data);
if (index != -1)
{
Erase(pSL, index);
}
}
//按数据删所有
void RemoveAll(SeqList *pSL, DataType data)
{
int index;
while ((index = Find(pSL, data)) != -1)
{
Erase(pSL, index);
}
}
//改
void Update(SeqList *pSL, int index, DataType data)
{
assert(pSL != NULL);
assert(index < pSL->size);
pSL->array[index] = data;
}
//判空,空:1;非空:0
int SeqListEmpty(const SeqList *pSL)
{
return pSL->size == 0 ? 1 : 0;
}
//判满,满:1;未满:0
int SeqListFull(const SeqList *pSL)
{
return pSL->size == MAX_SIZE ? 1 : 0;
}
//显示
int SeqListPrint(SeqList *pSL)
{
int i = 0;
for (i = 0; i < pSL->size; i++)
{
printf("%d\t", pSL->array[i]);
}
printf("\n");
return 0;
}
//销毁
void SeqListDestroy(SeqList * pSL)
{
assert(pSL != NULL);
pSL->size = 0;
}
////////////////test.c
#include "seqlist.h"
int main()
{
SeqList s1;
SeqListinit (&s1);
PushBack(&s1, 17);
PushBack(&s1, 18);
PushBack(&s1, 19);
SeqListPrint(&s1);
Insert(&s1, 2, 20);
Insert(&s1, 3, 120);
SeqListPrint(&s1);
PushFront(&s1, 4);
SeqListPrint(&s1);
Erase(&s1, 3);
SeqListPrint(&s1);
PopBack(&s1);
SeqListPrint(&s1);
PopFront(&s1);
SeqListPrint(&s1);
Remove(&s1, 17);
SeqListPrint(&s1);
Update(&s1, 0, 130);
SeqListPrint(&s1);
RemoveAll(&s1, 130);
SeqListPrint(&s1);
SeqListDestroy(&s1);
system("pause");
return 0;
}