#include<stdio.h>//头文件 #ifndef __SEQ_LIST__ #define __SEQ_LIST__ #define MIX_SIZE 5 typedef int DataType; typedef struct SeqList { DataType seqList[MIX_SIZE]; size_t size; }SeqList; void InitSeqList(SeqList* seq); void PrintSeqList(SeqList* seq); void PushBack(SeqList* seq, DataType x); void PopBack(SeqList* seq); void PushFront(SeqList* seq, DataType x); void PopFront(SeqList* seq); void Insert(SeqList* seq, size_t pos, DataType x); //// 返回-1表示未找到数据 int Find(SeqList* seq, DataType x); void Erase(SeqList* seq, size_t pos); void Remove(SeqList* seq, DataType x); void RemoveAll(SeqList* seq, DataType x); void Modify(SeqList* seq, size_t pos, DataType x); #endif #include<stdio.h>//函数文件 #include<assert.h> #include<string.h> #include"SeqList.h" void InitSeqList(SeqList* seq)//初始化 默认为零 { assert(seq); memset(seq, 0, MIX_SIZE); seq->size = 0; } void PrintSeqList(SeqList* seq)//遍历顺序表 { assert(seq); size_t index = 0; if (seq->size == 0) { printf("顺序表为空!\n"); return; } for (; index < seq->size ; ++index) { printf("%d\n",seq->seqList[index]); } } void PushBack(SeqList* seq, DataType x)//尾插 { assert(seq); if (seq->size > MIX_SIZE) seq->size = 0; if (seq->size == MIX_SIZE) { printf("顺序表已满!\n"); return; } seq->seqList[(seq->size)++] = x; } void PopBack(SeqList* seq)//尾删 { assert(seq); if (seq->size ==0) { printf("顺序表已空!\n"); return; } --(seq->size); } void PushFront(SeqList* seq, DataType x)//头插 { int end; assert(seq); if (seq->size > MIX_SIZE) seq->size = 0; if (seq->size == MIX_SIZE) { printf("顺序表已满!\n"); return; } end = (seq->size)++; for (; end > 0; --end) { seq->seqList[end] = seq->seqList[end - 1]; } seq->seqList[0] = x; } void PopFront(SeqList* seq)//头删 { size_t start = 0; assert(seq); if (seq->size == 0) { printf("顺序表已空!\n"); return; } for (; start <seq->size; ++start) { seq->seqList[start] = seq->seqList[start+1]; } --seq->size; } void Insert(SeqList* seq, size_t pos, DataType x) { int end; assert(seq); if (seq->size > MIX_SIZE) seq->size = 0; if (pos > seq->size) { printf("不合法的插入位置!\n"); return; } if (seq->size == MIX_SIZE) { printf("顺序表已满!\n"); return; } end = (seq->size)++; for (; end >= pos-1; --end) { seq->seqList[end] = seq->seqList[end - 1]; } seq->seqList[pos-1] = x; } int Find(SeqList* seq, DataType x) { size_t pos = 0; assert(seq); for (; pos < seq->size; ++pos) { if (seq->seqList[pos] == x) return pos; } return -1; } void Erase(SeqList* seq, size_t pos)//按位置删除 { size_t start = 0; assert(seq); if (seq->size == 0) { printf("顺序表已空!\n"); return; } start = pos - 1; for (; start <seq->size; ++start) { seq->seqList[start] = seq->seqList[start + 1]; } --seq->size; } void Remove(SeqList* seq, DataType x) { int tag = 0; assert(seq); if (seq->size == 0) { printf("顺序表为空!\n"); return; } size_t index = 0; for (; index < seq->size; ++index) { if (seq->seqList[index] == x) { for (; index < seq->size; ++index) { seq->seqList[index] = seq->seqList[index + 1]; } --seq->size; tag = 1; } } if (tag == 0) printf("未找到该元素!\n"); } void RemoveAll(SeqList* seq, DataType x) { size_t pos = 0,start=0; assert(seq); if (seq->size == 0) { printf("顺序表为空!\n"); return; } for (; pos < seq->size; ++pos) { if (seq->seqList[pos] == x) { for (start = pos; start < seq->size; ++start) { seq->seqList[start] = seq->seqList[start + 1]; } --seq->size; --pos; } } } void Modify(SeqList* seq, size_t pos, DataType x) { assert(seq); if (pos > seq->size) { printf("不合法的插入位置!\n"); return; } seq->seqList[pos-1] = x; } #include"SeqList.h"//主函数文件 //void test1(SeqList * seq) //{ // PushFront(seq, 0); // PushFront(seq, 1); // PushFront(seq, 2); // PushFront(seq, 3); // PushFront(seq, 3); // PrintSeqList(seq); // PopFront(seq); // PopFront(seq); // PopFront(seq); // PrintSeqList(seq); // PopFront(seq); // PopFront(seq); // PrintSeqList(seq); //} void test2(SeqList * seq) { PushFront(seq, 0); PushFront(seq, 3); PushFront(seq, 3); PushFront(seq, 3); Insert(seq, 2, 4); PrintSeqList(seq); printf("%d\n",Find(seq, 5)); /*Modify(seq, 2, 5); Erase(seq, 2);*/ PrintSeqList(seq); RemoveAll(seq, 3); PrintSeqList(seq); } int main() { SeqList seq; /*test1(&seq);*/ test2(&seq); return 0; }
c 语言 静态顺序表 基本操作
原创
©著作权归作者所有:来自51CTO博客作者霜柒染的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:c语言 c到c++的注释转换
下一篇:c 语言 动态顺序表
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
1.顺序表的实现——C语言
顺序表各种操作的代码实现
顺序表 冒泡排序 算法 随机数 -
顺序表的动态分配(C语言版)
顺序表的动态分配代码实录
顺序表 动态分配 C语言 -
顺序表基本操作
本题要求实
顺序表 #define List -
顺序表的基本操作
任务:编写一个程序,实现顺序表的创建,删除,查找,输出!例如:代码实现:
顺序表 sql #define -
C 语言顺序表
这个顺序表是使用数组来实现的,顺序表的插入、删除、遍历等操作,下面是 c 语
DataStructure 顺序表 #include i++