C::静态顺序表的实现

来源:互联网 发布:用友进销存软件优缺点 编辑:程序博客网 时间:2024/05/29 15:12

这里我实现了简单的静态顺序表,大家也可以练一练:大笑

1、声明

#ifndef __TEST__#define __TEST__#include<stdio.h>#include<assert.h>#include<string.h>#define MAX_SIZE 10typedef int Datatype;typedef struct SeqList{Datatype array[MAX_SIZE];int size;  //有效元素的个数}SeqList,*PSeqList;//初始化静态顺序表void InitSeqList(PSeqList pSeqList);//打印静态顺序表void Print(PSeqList pSeqList);//尾插void PushBack(PSeqList pSeqList,Datatype data);//尾删void PopBack(PSeqList pSeqList);//头插void PushFront(PSeqList pSeqList,Datatype data);//头删void PopFront(PSeqList pSeqList);//找特定的元素int Find(PSeqList pSeqList,Datatype data);//在特定的位置插入元素void Insert(PSeqList pSeqList,int pos,Datatype data);//擦出特定位置的元素void Erase(PSeqList pSeqList,int pos);#endif

2、函数实现体

#include"test.h"//初始化静态顺序表void InitSeqList(PSeqList pSeqList){pSeqList->size = 0;/*int i = 0;for(i = 0; i<pSeqList->size; i++){pSeqList->array[i] = 0;}*/memset(pSeqList->array,0,sizeof(Datatype)*MAX_SIZE);}//打印静态顺序表void Print(PSeqList pSeqList){int i = 0;assert(pSeqList);if(pSeqList->size <= 0){printf("静态顺序表已空!");return;}for(i = 0; i<pSeqList->size; i++){printf("%d ",pSeqList->array[i]);}}//尾插void PushBack(PSeqList pSeqList,Datatype data){assert(pSeqList);if(pSeqList->size >= MAX_SIZE){printf("静态顺序表已满,无法插入!");}pSeqList->array[pSeqList->size] = data;++pSeqList->size;}//尾删void PopBack(PSeqList pSeqList){assert(pSeqList);--pSeqList->size;}//头插void PushFront(PSeqList pSeqList,Datatype data){int i = 0;assert(pSeqList);if(pSeqList->size >= MAX_SIZE){printf("静态顺序表已满,无法储存!");}for(i = pSeqList->size-1; i>=0; i--){pSeqList->array[i+1] = pSeqList->array[i];}pSeqList->array[0] = data;++pSeqList->size;}//头删void PopFront(PSeqList pSeqList){int i = 0;assert(pSeqList);for(i = 0; i<pSeqList->size; i++){pSeqList->array[i] = pSeqList->array[i+1];}--pSeqList->size;}//找特定的元素int Find(PSeqList pSeqList,Datatype data){int i = 0;assert(pSeqList);for(i = 0; i<pSeqList->size; i++){if(pSeqList->array[i] == data){return 1;}}return -1;}//在特定的位置插入元素void Insert(PSeqList pSeqList,int pos,Datatype data){int i = 0;assert(pSeqList);if(pSeqList->size >= MAX_SIZE){printf("静态顺序表已满,无法插入!");}for(i = pSeqList->size-1; i<=pos; i--){pSeqList->array[i+1] = pSeqList->array[i];}pSeqList->array[pos] = data;++pSeqList->size;}//擦出特定位置的元素void Erase(PSeqList pSeqList,int pos){int i = 0;assert(pSeqList);for(i = pos; i<pSeqList->size; i++){pSeqList->array[i] = pSeqList->array[i+1];}--pSeqList->size;}

3、测试函数

#include"test.h"//尾插和尾删的测试void Funtest1(PSeqList pSeqList){InitSeqList(pSeqList);PushBack(pSeqList,1);PushBack(pSeqList,2);PushBack(pSeqList,3);PushBack(pSeqList,4);PushBack(pSeqList,5);PushBack(pSeqList,6);Print(pSeqList);printf("\n");PopBack(pSeqList);PopBack(pSeqList);PopBack(pSeqList);Print(pSeqList);}//测试头插头删void Funtest2(PSeqList pSeqList){InitSeqList(pSeqList);PushBack(pSeqList,1);PushBack(pSeqList,2);PushBack(pSeqList,3);PushBack(pSeqList,4);PushBack(pSeqList,5);PushBack(pSeqList,6);Print(pSeqList);printf("\n");PushFront(pSeqList,7);PushFront(pSeqList,8);Print(pSeqList);printf("\n");PopFront(pSeqList);Print(pSeqList);}//测试查找特定元素void Funtest3(PSeqList pSeqList){InitSeqList(pSeqList);PushBack(pSeqList,1);PushBack(pSeqList,2);PushBack(pSeqList,3);PushBack(pSeqList,4);PushBack(pSeqList,5);PushBack(pSeqList,6);Print(pSeqList);printf("\n");printf("%d",Find(pSeqList,3));printf("\n");printf("%d",Find(pSeqList,9));}//测试在特定位置插入void Funtest4(PSeqList pSeqList){InitSeqList(pSeqList);PushBack(pSeqList,1);PushBack(pSeqList,2);PushBack(pSeqList,3);PushBack(pSeqList,4);PushBack(pSeqList,5);PushBack(pSeqList,6);Print(pSeqList);printf("\n");Insert(pSeqList,Find(pSeqList,3),9);Print(pSeqList);printf("\n");}//测试在特定位置删除void Funtest5(PSeqList pSeqList){InitSeqList(pSeqList);PushBack(pSeqList,1);PushBack(pSeqList,2);PushBack(pSeqList,3);PushBack(pSeqList,4);PushBack(pSeqList,5);PushBack(pSeqList,6);Print(pSeqList);printf("\n");Erase(pSeqList,Find(pSeqList,2));Print(pSeqList);printf("\n");}int main(){SeqList seq;//Funtest1(&seq);//Funtest2(&seq);//Funtest3(&seq);//Funtest4(&seq);Funtest5(&seq);return 0;}



0 0
原创粉丝点击