#pragma once //物理文件角度,防止头文件重复引
#include<stdio.h>
#include<assert.h>
#include <stdlib.h>
typedef int DataType ;
#define MAX_SIZE (100)
typedef struct Seqlist{
DataType array[ MAX_SIZE ];
int size;//保存顺序表里已经存的数据个数;当前可用下标
}Seqlist;
//初始化
void SeqlistInit(Seqlist *pSeq)
{
assert(pSeq != NULL);
pSeq->size = 0;
}
//销毁
void Seqlistdestroy(Seqlist *pSeq)
{
assert(pSeq);
pSeq->size = 0;
}
//尾插
void Seqlistpushback(Seqlist *pSeq, DataType data)
{
if (pSeq->size = MAX_SIZE)
{
assert(0);
return;
}
pSeq->array[pSeq->size] = data;
pSeq->size++;
}
//头插
void Seqlistpushfront(Seqlist *pSeq,DataType data)
{
assert(pSeq);
int size = pSeq->size;
if (pSeq->size >= MAX_SIZE)
{
printf("满了\n");
assert(0);
return;
}
for (int i = size; i > 0; i--){
pSeq->array[i] = pSeq->array[i-1];
}
pSeq->array[0] = data;
pSeq->size++;
}
//随意插
void Seqlistinsert(Seqlist *pSeq, DataType data,int pos)
{
assert(pSeq);
assert(pos >= 0 && pos <= pSeq->size);
if (pSeq->size >= MAX_SIZE)
{
printf("满了\n");
assert(0);
return;
}
int size = pSeq->size;
for (int i = size ; i >= pos; i--)
{
pSeq->array[i+1] = pSeq->array[i];
}
pSeq->array[pos] = data;
pSeq->size++;
}
//头删
void Seqlistpopfront(Seqlist *pSeq)
{
assert(pSeq);
if (pSeq->size <= 0)
{
printf("空的\n");
assert(0);
return;
}
int size = pSeq->size;
for (int i = 0; i < size - 1; i++){
pSeq->array[i] = pSeq->array[i + 1];
}
pSeq->size--;
}
//尾删
void Seqlistpopback(Seqlist *pSeq)
{
if (pSeq->size = 0)
{
assert(0);
return;
}
pSeq->size--;
}
//随意删
void Seqlistback(Seqlist *pSeq,int pos)
{
assert(pSeq);
assert(pos >= 0 && pos <= pSeq->size);
if (pSeq->size >= MAX_SIZE)
{
printf("空了\n");
assert(0);
return;
}
int size = pSeq->size;
for (int i = pos; i < size - 1; i++)
{
pSeq->array[i] = pSeq->array[i + 1];
}
pSeq->size--;
}
//打印
void SeqlistPrint(const Seqlist * pSeq)
{
for (int i = 0; i < pSeq->size; i++)
{
printf("%d", pSeq->array[i]);
}
}
//查找
int SeqlistFind(Seqlist *pSeq, DataType data)
{
for (int i = 0; i < pSeq->size; i++)
{
if (data == pSeq->array[i])
{
return i;
}
}
return -1;
}
void test()
{
Seqlist Seqlist;
Seqlistpushback(&Seqlist, 1);
Seqlistpushback(&Seqlist, 2);
Seqlistpushback(&Seqlist, 3);
SeqlistPrint(&Seqlist);
}