头文件:ag.h
#ifndef __ag_H__
#define __ag_H__
#include<stdio.h>
#pragma warning(disable:4996)
#define MAX_SIZE 10
typedef int DataType;
typedef struct SeqList
{
DataType _arr[MAX_SIZE];
int _size;
}SeqList;
void InitSeqList(SeqList *ps);
void Print(SeqList *ps);
void SeqListPopBack(SeqList *ps);
void SeqListPushBack(SeqList *ps, DataType data);
void PushFront(SeqList *ps, DataType data);
void SeqListPopFront(SeqList *ps);
void SeqListInsert(SeqList *ps, int pos, DataType data);
void SeqListErase(SeqList *ps, int pos);
void InitSeqList(SeqList *ps) //初始化
{
memset(ps->_arr, 0, sizeof(ps->_size));
ps->_size = 0;
}
void Print(SeqList *ps) //打印
{
assert(ps);
int i = 0;
for (i = 0; i < ps->_size; i++)
{
printf("%d ", ps->_arr[i]);
}
printf("over\n");
}
void SeqListPopBack(SeqList *ps) //尾删
{
assert(ps);
ps->_size--;
}
void SeqListPushBack(SeqList *ps, DataType data) //尾加
{
if (ps->_size == MAX_SIZE)
{
printf("重新输入\n");
return;
}
else {
ps->_size++;
ps->_arr[ps->_size - 1] = data;
}
}
void PushFront(SeqList *ps, DataType data)//头插
{
if (ps->_size == MAX_SIZE)
{
printf("顺序表已满\n");
return;
}
else
{
int i = ps->_size;
for (; i > 0; i--)
{
ps->_arr[i] = ps->_arr[i - 1];
}
ps->_arr[0] = data;
ps->_size++;
}
}
void SeqListPopFront(SeqList *ps) //头删
{
assert(ps);
int i = 0;
for (i = 0; i < ps->_size; i++)
{
ps->_arr[i] = ps->_arr[i + 1];
}
ps->_size--;
}
void SeqListInsert(SeqList *ps, int pos, DataType data) //在顺序表的pos位置插入元素data
{
int i = 0;
ps->_size++;
for (i = 1; i < ps->_size - pos; i++)
{
ps->_arr[pos + i + 1] = ps->_arr[pos + i];
}
ps->_arr[pos] = data;
}
void SeqListErase(SeqList *ps, int pos) // 删除顺序表pos位置上的元素
{
assert(ps);
int i = 0;
for (i = 0; i < ps->_size - pos; i++)
{
ps->_arr[pos + i] = ps->_arr[pos + i + 1];
}
ps->_size--;
}
#endif __ag_H__
测试文件
#include<stdio.h>
#include<windows.h>
#include<assert.h>
#include"ag.h"
void test1() //初始化
{
SeqList ps;
InitSeqList(&ps);
}
void test2() //打印
{
SeqList ps;
Print(&ps);
}
void test3() //尾加
{
SeqList ps;
SeqListPushBack(&ps, 5);
SeqListPushBack(&ps, 4);
}
void test4() //尾删
{
SeqList ps;
SeqListPopBack(&ps);
}
void test5() //头加
{
SeqList ps;
InitSeqList(&ps);
PushFront(&ps, 2);
//PushFront(&ps, 2);
Print(&ps);
}
void test6() //头删
{
SeqList ps;
SeqListPopFront(&ps);
Print(&ps);
}
void test7() //在顺序表的pos位置插入元素data
{
SeqList ps;
InitSeqList(&ps);
PushFront(&ps, 2);
PushFront(&ps, 2);
PushFront(&ps, 2);
PushFront(&ps, 2);
PushFront(&ps, 2);
PushFront(&ps, 2);
PushFront(&ps, 2);
PushFront(&ps, 2);
SeqListInsert(&ps ,5, 4);
Print(&ps);
}
void test8() // 删除顺序表pos位置上的元素
{
SeqList ps;
InitSeqList(&ps);
PushFront(&ps, 2);
PushFront(&ps, 2);
PushFront(&ps, 4);
PushFront(&ps, 2);
PushFront(&ps, 2);
SeqListErase(&ps, 2);
Print(&ps);
}
int main()
{
test8();
system("pause");
}