c语言顺序表的实现与基本操作
来源:互联网 发布:淘宝投放手机详情 编辑:程序博客网 时间:2024/05/22 13:15
顺序表
定义:如图所示顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。
顺序表的特性:
1.长度固定;
2.存储空间是连续的;
3.要在顺序表中插入或删除一个元素的时候会牵动其后的所有元素,所以时间复杂度是O(n)
结构体实现
#defineMAX_SIZE 10typedef int DataType;typedef struct Seqlist{DataType array[MAX_SIZE];int size;}Seqlist, *pSeqlist;
函数功能实现
void InitSeqlist(pSeqlist Seq){//初始化assert(Seq);memset(Seq->array,0,MAX_SIZE*sizeof(DataType));Seq->size = 0;}void PopBack(pSeqlist Seq){//尾部删除assert(Seq);if (Empty(Seq)){printf("顺序表为空");}Seq->size--;}void PushBack(pSeqlist Seq,DataType data){//尾部插入assert(Seq && data);if (Seq->size >= MAX_SIZE){printf("顺序表已满");return 0;}Seq->size++;Seq->array[Seq->size] = data;}
void PopFront(pSeqlist Seq){//头部删除int i = 0;assert(Seq);if (Empty(Seq)){printf("顺序表为空");}for (i = 0; i > Seq->size; i++){Seq->array[i] = Seq->array[i+1];}Seq->size--;}void PushFront(pSeqlist Seq,DataType data){//头部插入int i = 0;assert(Seq && data);if (Seq->size >= MAX_SIZE){printf("顺序表已满");return 0;}for (i = 0; i < Seq->size; i++){Seq->array[i + 1] = Seq->array[i];}Seq->array[0] = data;}
void Insert(pSeqlist Seq, int pos,DataType data){//指定位置插入int i = 0;assert(Seq && pos < Seq->size);if (Seq->size >= MAX_SIZE){printf("顺序表已满");return 0;}if (pos > Seq->size){printf("插入位置不合法");return 0;} for (i = Seq->size; i > pos; i--)Seq->array[i + 1] = Seq->array[i];Seq->array[i] = data;Seq->size++;}void Erase(pSeqlist Seq, int pos){//指定位置删除int i = 0;assert(Seq && pos);if (Empty(Seq)){printf("顺序表为空");}if (pos > Seq->size){printf("删除位置不合法");}for (i = pos; i < Seq->size; i++){Seq->array[pos - 1] = Seq->array[pos];}Seq->size--;}
void Remove(pSeqlist Seq, DataType data){//删除指定元素int i = 0;assert(Seq && data);if (Empty(Seq)){printf("顺序表空");}while (Seq->array[i] != data){i++;}Erase(Seq, i);}void RemoveAll(pSeqlist Seq,DataType data){//删除指定元素所有相同元素int count = 0;int i = 0;assert(Seq);if (Empty(Seq)){printf("顺序表为空");}for (i = 0; i < Seq->size; i++){while (Seq->array[i] == data){count++;}Seq->array[i] = Seq->array[i + count];}Seq->size = Seq->size - count;}
int Empty(pSeqlist Seq) {//判空if (0 == Seq->size)return 1;return 0;}void PrintSeqList(pSeqlist Seq){//遍历顺序表int i = 0;for (i = 0; i < Seq->size; i++){printf("%d", Seq->array[i]);}printf("\n");}
0 0
- c语言顺序表的实现与基本操作
- 数据结构C语言实现线性表(顺序实现)的初始化与基本操作
- C语言实现顺序表的基本操作
- C语言实现----顺序表的基本操作(1)
- 顺序线性表的基本操作(C语言实现)
- C语言顺序表的基本操作
- 静态与动态顺序表操作的C语言实现
- C语言实现顺序栈的基本操作
- C语言实现顺序栈的基本操作
- 单向链表的C语言实现与基本操作
- C语言顺序栈的基本操作
- C语言实现顺序表的插入、删除、查找、遍历等基本操作
- 顺序表的基本操作(C语言)
- 数据结构 (C语言)顺序表的基本操作
- 顺序表基本操作-C语言
- 顺序表的基本操作用C 语言实现
- 顺序表的基本操作用c语言实现
- 《数据结构与算法》-单链表基本操作的C语言实现
- linux设备驱动模型之 bus(总线)原理与实例分析
- HDU 4825 Xor Sum (字典树求异或最大值)
- 自定义数字软键盘
- 跟我一起学C++之重载
- 2016秋季练习
- c语言顺序表的实现与基本操作
- 我们是无耻之徒吗?
- FFmpeg简介
- JDK 1.6 与JDK1.7的区别
- location.herf 和 location.replace
- 百度传课 amazeUI 按钮交互 作业
- mina源码学习之IoSession
- *浙大PAT甲级 1114 并查集
- 汉诺塔系列1