C语言实现静态顺序表的实例详解
发布时间:2020-12-26 00:29:40 所属栏目:经验 来源:网络整理
导读:C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识。只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作。 接下来看看静态的顺序表,直接上代码: SeqLis
C语言实现静态顺序表的实例详解 线性表 定义一张顺序表也就是在内存中开辟一段连续的存储空间,并给它一个名字进行标识。只有定义了一个顺序表,才能利用该顺序表存放数据元素,也才能对该顺序表进行各种操作。 接下来看看静态的顺序表,直接上代码: SeqList.h #define _CRT_SECURE_NO_WARNINGS 1 #ifndef __SEQLIST_H__ #define __SEQLIST_H__ #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <string.h> #define MAX 10 typedef int DataType; typedef struct SeqList { DataType data[MAX]; int sz; }SeqList,*pSeqList; void InitSeqList(pSeqList ps); void PushBack(pSeqList ps,DataType d); void PopBack(pSeqList ps); void PushFront(pSeqList ps,DataType d); void PopFront(pSeqList ps); void Display(const pSeqList ps); int Find(pSeqList ps,DataType d); void Insert(pSeqList ps,DataType d,int pos); void Remove(pSeqList ps,DataType d); void RemoveAll(pSeqList ps,DataType d); void Reverse(pSeqList ps); void Sort(pSeqList ps); int BinarySearch(pSeqList ps,DataType d); #endif//__SEQLIST_H__ SeqList.c #define _CRT_SECURE_NO_WARNINGS 1 #include "SeqList.h" void InitSeqList(pSeqList ps) { assert(ps); ps->sz = 0; memset(ps->data,sizeof(DataType)*MAX); } void PushBack(pSeqList ps,DataType d) { assert(ps); if (ps->sz == MAX) { return; } ps->data[ps->sz] = d; ps->sz++; } void PopBack(pSeqList ps) { assert(ps); if (ps->sz == 0) { return; } ps->sz--; } void PushFront(pSeqList ps,DataType d) { int i = 0; assert(ps); for (i = ps->sz; i >= 1; i--) { ps->data[i] = ps->data[i - 1]; } ps->data[0] = d; ps->sz++; } void PopFront(pSeqList ps) { int i = 0; assert(ps); for (i = 0; i < ps->sz; i++) { ps->data[i] = ps->data[i + 1]; } ps->sz--; } void Display(const pSeqList ps) { int i = 0; assert(ps); for (i = 0; i < ps->sz; i++) { printf("%d ",ps->data[i]); } printf("n"); } int Find(pSeqList ps,DataType d) { int i = 0; assert(ps); for (i = 0; i < ps->sz; i++) { if (ps->data[i] == d) { return i; } } return -1; } void Insert(pSeqList ps,int pos) { int i = 0; assert(ps); if (ps->sz == MAX) { return; } //方式一 //for (i = ps->sz - 1; i >= pos; i--) //{ // ps->data[i + 1] = ps->data[i]; / |