1.实现的接口及其功能
//初始化顺序表
void initSL(SL* p);
//销毁顺序表
void DestorySL(SL* p);
//头插
void PushFont(SL* p, SeqListType x);
//尾插
void PushBack(SL* p, SeqListType x);
//头删
void PopFont(SL* p);
//尾删
void PopBack(SL* p);
//显示存的数据
void Show(SL* p);
//检查扩容
void CheckSL(SL* p);
//指定位置插入
void InsertSL(SL* p, int x, SeqListType y);
//指定位置删除
void EraseSL(SL* p,int x);
//查找某一位置
int FindSlL(SL* p, SeqListType x);
//把某一位置存的数改掉
void ModifySL(SL* p, int pos, SeqListType x);
2.代码块
测试顺序表功能代码
#define _CRT_SECURE_NO_WARNINGS 1 #include"SeqList.h" int main() { SL sl; initSL(&sl); PushBack(&sl, 1); PushBack(&sl, 2); PushFont(&sl, 3); PushFont(&sl, 4); PushFont(&sl, 5); Show(&sl); PopFont(&sl); Show(&sl); PopBack(&sl); Show(&sl); InsertSL(&sl, 3, 6); EraseSL(&sl, 0); Show(&sl); DestorySL(&sl); }
顺序表声明代码
#pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> typedef int SeqListType; typedef struct SeqList { SeqListType* a; int size; int capacity; }SL; //初始化顺序表 void initSL(SL* p); //销毁顺序表 void DestorySL(SL* p); //头插 void PushFont(SL* p, SeqListType x); //尾插 void PushBack(SL* p, SeqListType x); //头删 void PopFont(SL* p); //尾删 void PopBack(SL* p); //显示存的数据 void Show(SL* p); //检查扩容 void CheckSL(SL* p); //指定位置插入 void InsertSL(SL* p, int x, SeqListType y); //指定位置删除 void EraseSL(SL* p,int x); //查找某一位置 int FindSlL(SL* p, SeqListType x); //把某一位置存的数改掉 void ModifySL(SL* p, int pos, SeqListType x);
顺序表实现代码
#define _CRT_SECURE_NO_WARNINGS 1 #include"SeqList.h" void CheckSL(SL* p) { if (p->capacity == p->size) { SeqListType* tmp = (SeqListType*)realloc(p->a, sizeof(SeqListType) * 2 * p->capacity); if (tmp == NULL) { perror("realloc fail\n"); return; } p->capacity *= 2; p->a = tmp; tmp = NULL; } } void initSL(SL* p) { p->a = (SeqListType*)malloc(sizeof(SeqListType)*4); if (p->a == NULL) { perror("malloc fail\n"); return; } p->capacity = 4; p->size = 0; } void DestorySL(SL* p) { free(p->a); p->a = NULL; p->capacity = 0; p->size = 0; } void PushBack(SL* p, SeqListType x) { CheckSL(p); p->a[p->size++] = x; } void PopBack(SL* p) { assert(p->size > 0); p->size--; } void PushFont(SL* p, SeqListType x) { CheckSL(p); for (int i = p->size; i > 0; i--) { p->a[i] = p->a[i - 1]; } p->a[0] = x; p->size++; } void PopFont(SL* p) { assert(p->size > 0); for (int i = 0; i < p->size - 1; i++) { p->a[i] = p->a[i + 1]; } p->size--; } void Show(SL* p) { for (int i = 0; i < p->size; i++) { printf("%d ", p->a[i]); } printf("\n"); } void InsertSL(SL* p, int x, SeqListType y) { assert(x<=p->size); CheckSL(p); for (int i = p->size-1; i >= x; i--) { p->a[i + 1] = p->a[i]; } p->a[x] = y; p->size++; } void EraseSL(SL* p, int x) { assert(x <= p->size - 1 && x >= 0); for (int i = x; i < p->size - 1; i++) { p->a[i] = p->a[i + 1]; } p->size--; } int FindSlL(SL* p, SeqListType x) { int pos = -1; for (int i = 0; i < p->size; i++) { if (p->a[i] == x) { pos = i; break; } } return pos; } void ModifySL(SL* p, int pos, SeqListType x) { assert(pos <= p->size - 1 && pos >= 0); p->a[pos] = x; }
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!