实现一个顺序表

来源:互联网 发布:js href click 编辑:程序博客网 时间:2024/06/07 13:17

头文件:ag.h

#ifndef __ag_H__  #define __ag_H__ #include<stdio.h>  #pragma warning(disable:4996)#define MAX_SIZE 10typedef 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");}