#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
#include<stdio.h>
//顺序表的静态存储
#define MAX_SIZE 100
typedef struct SeqList
{
int arr[MAX_SIZE];
size_t size;
}SeqList, *pSeqList;
顺序表的动态存储
//typedef struct SeqList
//{
// int *arr;
// size_t size;//当前的有效数据快的个数
// size_t capcity;//当前容量
//}SeqList;
void InitSeqList(pSeqList pSeq);//初始化
void PrintSeqList(SeqList Seq);//输出
void PushBack(pSeqList pSeq, int x);//后面添加
void PopBack(pSeqList pSeq);//后面删除
void PushFront(pSeqList pSeq, int x);//前面添加
void PopFront(pSeqList pSeq);//前面删除
void myInsert(pSeqList pSeq, int pos, int x);//按照位置插入
void Remove(pSeqList pSeq, int x);//指定删除
void RemoveAll(pSeqList pSeq, int x);//删除所有出现的x元素
void ReverseList(pSeqList pSeq);//逆序
void SortList(pSeqList pSeq);//排序
void BinarySearch(pSeqList pSeq, int x);//二分查找
void InitSeqList(pSeqList pSeq)
{
assert(pSeq);
memset(pSeq->arr, 0, sizeof(pSeq->arr));
pSeq->size = 0;
}
void PrintSeqList(SeqList Seq)
{
for (int i = 0; i < Seq.size; i++)
{
printf("%d ", Seq.arr[i]);
}
printf("Over\n");
}
void PushBack(pSeqList pSeq, int x)//后面添加
{
assert(pSeq);
if (pSeq->size >= MAX_SIZE)
{
printf("the seqlist is full\n");
return;
}
pSeq->arr[pSeq->size++] = x;//赋值,并更新size
}
void PopBack(pSeqList pSeq)//后面删除
{
assert(pSeq);
if (pSeq->size == 0)
{
printf("seqlist is null\n");
return;
}
pSeq->size--;
}
void PushFront(pSeqList pSeq, int x)//前面添加
{
assert(pSeq);
if (pSeq->size >= MAX_SIZE)
{
printf("the seqlist is full\n");
return;
}
for (int i = pSeq->size; i > 0; i--)
{
pSeq->arr[i] = pSeq->arr[i - 1];
}
pSeq->arr[0] = x;//最前面一个等于0
pSeq->size++;//更新size
}
void PopFront(pSeqList pSeq)//前面删除
{
assert(pSeq);
if (pSeq->size == 0)
{
printf("seqlist is null\n");
return;
}
for (int i = 0; i < pSeq->size - 1; i++)
{
pSeq->arr[i] = pSeq->arr[i + 1];
}
pSeq->size--;
}
void myInsert(pSeqList pSeq, int pos, int x)//按照位置插入
{
assert(pSeq);
if (pSeq->size >= MAX_SIZE)
{
printf("the seqlist is full\n");
return;
}
for (int i = pSeq->size; i > pos; i--)
{
pSeq->arr[i] = pSeq->arr[i - 1];
}
pSeq->arr[pos] = x;
pSeq->size++;
}
int _find(SeqList Seq, int x)
{
for (int i = 0; i < Seq.size; i++)
{
if (x == Seq.arr[i])
{
return i;
}
}
return -1;
}
void find(pSeqList pSeq, int x)
{
int ret = _find(*pSeq, x);
if (ret == -1)
printf("%d不在这个顺序表中\n", x);
else
printf("%d在这个顺序表中\n", x);
}
void Remove(pSeqList pSeq, int x)//指定删除
{
assert(pSeq);
int pos = _find(*pSeq, x);
if (pos != -1)
{
for (int i = pos; i < pSeq->size; i++)
{
pSeq->arr[i] = pSeq->arr[i + 1];
}
pSeq->size--;
}
else
printf("%d不再这个顺序表中\n");
}
{
int end = pSeq->size - 1;
int start = 0;
while (start < end)
{
int temp = pSeq->arr[start];
pSeq->arr[start] = pSeq->arr[end];
pSeq->arr[end] = temp;
end--;
start++;
}
}
void Test()
{
SeqList mySeq;
InitSeqList(&mySeq);
PushBack(&mySeq, 1);
PushBack(&mySeq, 2);
PushBack(&mySeq, 3);
PushBack(&mySeq, 3);
PushBack(&mySeq, 4);
PushBack(&mySeq, 5);
PrintSeqList(mySeq);
//PopBack(&mySeq);//后面删除
//PushFront(&mySeq, 1);//前面添加
//PopFront(&mySeq);//前面删除
//myInsert(&mySeq, 3, 2);//按照位置插入
PrintSeqList(mySeq);
}
int main()
{
Test();
system("pause");
return 0;
#include<iostream>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
#include<stdio.h>
//顺序表的静态存储
#define MAX_SIZE 100
typedef struct SeqList
{
int arr[MAX_SIZE];
size_t size;
}SeqList, *pSeqList;
顺序表的动态存储
//typedef struct SeqList
//{
// int *arr;
// size_t size;//当前的有效数据快的个数
// size_t capcity;//当前容量
//}SeqList;
void InitSeqList(pSeqList pSeq);//初始化
void PrintSeqList(SeqList Seq);//输出
void PushBack(pSeqList pSeq, int x);//后面添加
void PopBack(pSeqList pSeq);//后面删除
void PushFront(pSeqList pSeq, int x);//前面添加
void PopFront(pSeqList pSeq);//前面删除
void myInsert(pSeqList pSeq, int pos, int x);//按照位置插入
void Remove(pSeqList pSeq, int x);//指定删除
void RemoveAll(pSeqList pSeq, int x);//删除所有出现的x元素
void ReverseList(pSeqList pSeq);//逆序
void SortList(pSeqList pSeq);//排序
void BinarySearch(pSeqList pSeq, int x);//二分查找
void InitSeqList(pSeqList pSeq)
{
assert(pSeq);
memset(pSeq->arr, 0, sizeof(pSeq->arr));
pSeq->size = 0;
}
void PrintSeqList(SeqList Seq)
{
for (int i = 0; i < Seq.size; i++)
{
printf("%d ", Seq.arr[i]);
}
printf("Over\n");
}
void PushBack(pSeqList pSeq, int x)//后面添加
{
assert(pSeq);
if (pSeq->size >= MAX_SIZE)
{
printf("the seqlist is full\n");
return;
}
pSeq->arr[pSeq->size++] = x;//赋值,并更新size
}
void PopBack(pSeqList pSeq)//后面删除
{
assert(pSeq);
if (pSeq->size == 0)
{
printf("seqlist is null\n");
return;
}
pSeq->size--;
}
void PushFront(pSeqList pSeq, int x)//前面添加
{
assert(pSeq);
if (pSeq->size >= MAX_SIZE)
{
printf("the seqlist is full\n");
return;
}
for (int i = pSeq->size; i > 0; i--)
{
pSeq->arr[i] = pSeq->arr[i - 1];
}
pSeq->arr[0] = x;//最前面一个等于0
pSeq->size++;//更新size
}
void PopFront(pSeqList pSeq)//前面删除
{
assert(pSeq);
if (pSeq->size == 0)
{
printf("seqlist is null\n");
return;
}
for (int i = 0; i < pSeq->size - 1; i++)
{
pSeq->arr[i] = pSeq->arr[i + 1];
}
pSeq->size--;
}
void myInsert(pSeqList pSeq, int pos, int x)//按照位置插入
{
assert(pSeq);
if (pSeq->size >= MAX_SIZE)
{
printf("the seqlist is full\n");
return;
}
for (int i = pSeq->size; i > pos; i--)
{
pSeq->arr[i] = pSeq->arr[i - 1];
}
pSeq->arr[pos] = x;
pSeq->size++;
}
int _find(SeqList Seq, int x)
{
for (int i = 0; i < Seq.size; i++)
{
if (x == Seq.arr[i])
{
return i;
}
}
return -1;
}
void find(pSeqList pSeq, int x)
{
int ret = _find(*pSeq, x);
if (ret == -1)
printf("%d不在这个顺序表中\n", x);
else
printf("%d在这个顺序表中\n", x);
}
void Remove(pSeqList pSeq, int x)//指定删除
{
assert(pSeq);
int pos = _find(*pSeq, x);
if (pos != -1)
{
for (int i = pos; i < pSeq->size; i++)
{
pSeq->arr[i] = pSeq->arr[i + 1];
}
pSeq->size--;
}
else
printf("%d不再这个顺序表中\n");
}
void RemoveAll(pSeqList pSeq, int x)
{
while (_find(*pSeq, x) != -1)
{
Remove(pSeq, x);
}
}
{
int end = pSeq->size - 1;
int start = 0;
while (start < end)
{
int temp = pSeq->arr[start];
pSeq->arr[start] = pSeq->arr[end];
pSeq->arr[end] = temp;
end--;
start++;
}
}
void Test()
{
SeqList mySeq;
InitSeqList(&mySeq);
PushBack(&mySeq, 1);
PushBack(&mySeq, 2);
PushBack(&mySeq, 3);
PushBack(&mySeq, 3);
PushBack(&mySeq, 4);
PushBack(&mySeq, 5);
PrintSeqList(mySeq);
//PopBack(&mySeq);//后面删除
//PushFront(&mySeq, 1);//前面添加
//PopFront(&mySeq);//前面删除
//myInsert(&mySeq, 3, 2);//按照位置插入
Remove(&mySeq, 3);//指定删除
RemoveAll(&mySeq, 3);//指定删除所有
PrintSeqList(mySeq);
}
int main()
{
Test();
system("pause");
return 0;
}
代码运行结果:
PopBack(&mySeq);//后面删除
PushFront(&mySeq, 1);//前面添加
PopFront(&mySeq);//前面删除
myInsert(&mySeq, 3, 2);//按照位置插入
Remove(&mySeq, 3);//指定删除
RemoveAll(&mySeq, 3);//指定删除所有
ReverseList(&mySeq);//逆序