#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
typedef int SLDateType;
typedef struct SeqList{
SLDateType* _a;
int size;
int capacity;
}SL;
void SeqListInit(SL* ps);//初始化数组
void SeqListPushBack(SL* ps, SLDateType x); //尾部增加
void SeqListCheckCapacity(SL* ps); //扩容函数
void SeqListPrint(SL* ps); //打印数组
void SeqListPopBack(SL* ps); //尾部删除
void SeqListPushFront(SL* ps, SLDateType x); //头部增加
void SeqListPopFront(SL* ps); //头部删除
int SeqListInsert(SL* ps, int pos, SLDateType x); //任意位置插入
void SeqListErase(SL* ps, int pos); //任意位置删除
void SeqListInit(SL* ps)//初始化数组
{
ps->_a = (SLDateType*)malloc(sizeof(SLDateType)*4);
ps->size = 0;
ps->capacity = 4;
}
void SeqListPushBack(SL* ps, SLDateType x) //尾部增加
{
SeqListCheckCapacity(ps);
ps->_a[ps->size] = x;
ps->size++;
}
void SeqListCheckCapacity(SL* ps)//扩容函数
{
ps->capacity*=2;
if(ps->size>=ps->capacity)
{
ps->_a = (SLDateType*)realloc(ps->_a,sizeof(SLDateType)*ps->capacity);
}
}
void SeqListPrint(SL* ps)//打印数组
{
int i=0;
for(i=0; i<ps->size; i++)
{
printf("%d ",ps->_a[i]);
}
}
void SeqListPopBack(SL* ps) //尾部删除
{
assert(ps);
ps->size--;
}
void SeqListPushFront(SL* ps, SLDateType x)//头部增加
{
assert(ps);
SeqListCheckCapacity(ps);
if(ps->size==0)
{
ps->_a[0] = x;
ps->size++;
}
else
{
int i = ps->size;
while(i!=0)
{
ps->_a[i] = ps->_a[i-1];
i--;
}
ps->_a[i] = x;
ps->size++;
}
}
void SeqListPopFront(SL* ps) //头部删除
{
assert(ps);
int i=1;
while(i<ps->size)
{
ps->_a[i-1] = ps->_a[i];
i++;
}
ps->size--;
}
int SeqListInsert(SL* ps, int pos, SLDateType x) //任意位置插入
{
assert(ps);
SeqListCheckCapacity(ps);
if(pos==0)
{
SeqListPushFront(ps,x);
}
else if(pos == ps->size)
{
ps->_a[ps->size] = x;
}
else{
int i=0;
int j = ps->size;
for(i=0; i<ps->size-pos; i++)
{
ps->_a[j] = ps->_a[j-1];
j--;
}
ps->_a[pos] = x;
}
ps->size++;
}
int main(int argc, char *argv[]) {
SL ps;
SeqListInit(&ps);
SeqListPushBack(&ps, 1);
SeqListPushBack(&ps, 2);
SeqListPushBack(&ps, 3);
SeqListPushBack(&ps, 4);
SeqListPushBack(&ps, 5);
SeqListPushBack(&ps, 6);
SeqListPrint(&ps);
printf("\n");
SeqListPopBack(&ps);
SeqListPrint(&ps);
printf("\n");
SeqListPushFront(&ps, 0);
SeqListPushFront(&ps, -1);
SeqListPrint(&ps);
printf("\n");
SeqListPopFront(&ps);
SeqListPopFront(&ps);
SeqListPrint(&ps);
printf("\n");
SeqListInsert(&ps, 3, 100);
SeqListPrint(&ps);
return 0;
}
03-29
1663
04-02
05-18
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交