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
- C::静态顺序表的实现
- C语言静态顺序表的实现
- 静态顺序表的c实现
- 静态顺序表的C语言实现
- 静态和动态顺序表的实现(c语言)
- C语言 顺序表的实现(静态)
- 静态与动态顺序表操作的C语言实现
- C语言:静态顺序表的实现和相关操作
- 顺序表的静态存储c语言实现
- 静态顺序表的实现(C语言版)
- 静态顺序表的实现(C语言)
- c语言静态顺序表的相关功能实现
- 线性表的顺序静态存储--C语言实现
- 静态顺序表用C实现的各种操作
- 静态顺序表的实现
- 静态顺序表的实现
- 静态顺序表的实现
- 静态顺序表的实现
- js ==与===区别
- openl FBO使用经验
- ActivityRecord、TaskRecord、ActivityStack
- 20161219笔记
- mybatis简介
- C::静态顺序表的实现
- J2SE第十一章——GUI(事件监听机制)
- QT信号槽的压力问题
- java并发编程之线程同步辅助类(一)
- 【Spring】web开发 javaConfig方式 图解
- 嵌入式linux开发板使用pulseaudio连接蓝牙耳机播放音频文件
- UVA1586 Molar mass
- 4516: [Sdoi2016]生成魔咒
- Unity一个智能火力点,根据攻击范围自动旋转攻击