#pragma once
#define __SEQ_LIST__
#ifdef __SEQ_LIST__
#include <stdio.h>
#include <assert.h>
#include <string.h>
#define MAX_SIZE 100
typedef int DataType;
typedef struct SeqList
{
DataType array[MAX_SIZE];
size_t size;
}SeqList;
//typedef struct SeqList SeqList;
void InitSeqList(SeqList* pSeq);
void PrintSeqList(SeqList* pSeq);
void PushBack(SeqList* pSeq, DataType x);
void PopBack(SeqList* pSeq);
void PushFront(SeqList* pSeq, DataType x);
void PopFront(SeqList* pSeq);
void Insert(SeqList* pSeq, size_t index, DataType x);
void Modified(SeqList* pSeq, size_t index, DataType x);
void removed(SeqList* pSeq, size_t index);
#endif // __SEQ_LIST__
#include "SeqList.h"
//初始化数组为0
void InitSeqList(SeqList* pSeq)
{
assert(pSeq);
memset(pSeq->array, 0, MAX_SIZE*sizeof(DataType));
pSeq->size = 0;
}
//打印数组
void PrintSeqList(SeqList* pSeq)
{
size_t i = 0;
assert(pSeq);
for (; i < pSeq->size; ++i)
{
printf("%d ", pSeq->array[i]);
}
printf("\n");
}
//从数组的后边插入数
void PushBack(SeqList* pSeq, DataType x)
{
assert(pSeq != NULL);
if (pSeq->size > MAX_SIZE - 1)
{
printf("SeqList Is Full\n");
return;
}
pSeq->array[(pSeq->size)++] = x;
}
//从数组的后边删除数
void PopBack(SeqList* pSeq)
{
assert(pSeq);
if (pSeq->size < 1)
{
printf("SeqList Is Empty\n");
return;
}
//pSeq->array[--(pSeq->size)] = 0;
--pSeq->size;
}
//从数组的前边插入数
void PushFront(SeqList* pSeq, DataType x)
{
assert(pSeq);
int i;
for (i = pSeq->size; i>0; i--)
{
pSeq->array[i] = pSeq->array[i - 1];
}
pSeq->array[0] = x;
pSeq->size++;
}
//从数组的前边删除数
void PopFront(SeqList* pSeq)
{
assert(pSeq);
size_t i;
if (pSeq->size > 0)
{
for (i = 0; i < pSeq->size; i++)
{
pSeq->array[i] = pSeq->array[i + 1];
}
pSeq->size--;
}
else
printf("SeqList Is Empty!");
}
// 插入x到index位置
void Insert(SeqList* pSeq, size_t index, DataType x)
{
assert(pSeq);
assert(index<=pSeq->size);
size_t i;
for (i = pSeq->size; i>index; i--)
{
pSeq->array[i] = pSeq->array[i - 1];
}
pSeq->array[index] = x;
pSeq->size++;
}
//改变index处的数为x
void Modified(SeqList* pSeq, size_t index, DataType x)
{
assert(pSeq);
assert(index < pSeq->size);
pSeq->array[index] = x;
}
//删除index处的数
void removed(SeqList* pSeq, size_t index)
{
assert(pSeq);
assert(index < pSeq->size);
size_t i;
for (i = index; i < pSeq->size; i++)
{
pSeq->array[i] = pSeq->array[i + 1];
}
pSeq->size--;
}
#include "SeqList.h"
// InitSeqList
// PushBack
// PopFront
// PopFront
// PopBack
void Test1()
{
SeqList s;
InitSeqList(&s);
PushBack(&s, 1);
PushBack(&s, 2);
PushBack(&s, 3);
PushBack(&s, 4);
PrintSeqList(&s);
//PushFront(&s, 99);
//PrintSeqList(&s);
PopFront(&s);
PrintSeqList(&s);
//PopBack(&s);
//PopBack(&s);
//PrintSeqList(&s);
}
// PushFront
// PopFront
void Test2()
{
SeqList s;
InitSeqList(&s);
//PushFront(&s, 1);
//PushFront(&s, 2);
//PushFront(&s, 3);
//PushFront(&s, 4);
//PrintSeqList(&s);
//PopFront(&s);
//PopFront(&s);
//PopFront(&s);
PrintSeqList(&s);
}
// Insert
// Modified
// removed
void Test3()
{
SeqList s;
InitSeqList(&s);
Insert(&s, 0, 0);
Insert(&s, 1, 1);
Insert(&s, 2, 2);
Insert(&s, 3, 3);
PrintSeqList(&s);
Insert(&s, 1, 10);
PrintSeqList(&s);
Modified(&s, 1, 99);
PrintSeqList(&s);
removed(&s, 2);
PrintSeqList(&s);
}
int main()
{
//Test1();
//Test2();
Test3();
return 0;
}
SeqList.
最新推荐文章于 2024-09-20 23:21:34 发布