详解C语言之顺序表
更新时间:2021年11月17日 15:31:44 作者:ぃ咔哇依°ヽ
这篇文章主要为大家介绍了C语言的顺序表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
一、思维导图
二、步骤
1.初始化
代码如下:
void ListInit(SeqList *L) { L->size = 0; }
2.求表长
代码如下:
int ListLength(SeqList L) { return L.size; }
3.插入数据元素
代码如下:
int ListInsert(SeqList *L, int i, DataType x) { int j; if (L->size >= MaxSize) { printf("顺序表已满,插入失败!!!\n"); return 0; } else if (i<0 || i>L->size) { printf("参数i不合法,插入失败!!!\n"); return 0; } else { for (j = L->size; j > i; j--) L->list[j] = L->list[j - 1]; L->list[i] = x; L->size++; return 1; } }
4.删除数据元素
代码如下:
int ListInsert(SeqList *L, int i, DataType x) { int j; if (L->size >= MaxSize) { printf("顺序表已满,插入失败!!!\n"); return 0; } else if (i<0 || i>L->size) { printf("参数i不合法,插入失败!!!\n"); return 0; } else { for (j = L->size; j > i; j--) L->list[j] = L->list[j - 1]; L->list[i] = x; L->size++; return 1; } }
5.取出数据元素
按位查找
代码如下:
int ListGet(SeqList L, int i, DataType *x) { if (L.size <= 0) { printf("顺序表已空,取出元素失败!!!\n"); return 0; } else if (i < 0 || i >= L.size) { printf("参数i不合法,取出元素失败!!!\n"); return 0; } else { *x = L.list[i]; return 1; } }
按位查找
代码如下:
int ListGetZ(SeqList L, DataType x, int *i) { int j; for (j = 0; j < ListLength(L); j++) { if (L.list[j] == x) { *i = j; return 1; } } return 0; }
所有代码
#include <stdio.h> #define MaxSize 1024 //数组能存储的最大最大元素个数 typedef int DataType; //存储数据元素的数据类型 typedef struct { DataType list[MaxSize]; int size; //当前存储的数据元素个数 }SeqList; //初始化 void ListInit(SeqList *L) { L->size = 0; } //求表长 int ListLength(SeqList L) { return L.size; } //插入数据元素 int ListInsert(SeqList *L, int i, DataType x) { int j; if (L->size >= MaxSize) { printf("顺序表已满,插入失败!!!\n"); return 0; } else if (i<0 || i>L->size) { printf("参数i不合法,插入失败!!!\n"); return 0; } else { for (j = L->size; j > i; j--) L->list[j] = L->list[j - 1]; L->list[i] = x; L->size++; return 1; } } //删除数据元素 int ListDelete(SeqList *L, int i, DataType *x) { int j; if (L->size <= 0) { printf("顺序表已空,删除失败!!!\n"); return 0; } else if (i < 0 || i >= L->size) { printf("参数i不合法,删除失败!!!\n"); return 0; } else { *x = L->list[i]; for (j = i; j < L->size - 1; j++) L->list[j] = L->list[j + 1]; L->size--; return 1; } } //取出数据元素 //按位查找 void ListGet(SeqList L, int i, DataType *x) { if (L.size <= 0) { printf("顺序表已空,取出元素失败!!!\n"); return 0; } else if (i < 0 || i >= L.size) { printf("参数i不合法,取出元素失败!!!\n"); return 0; } else { *x = L.list[i]; return 1; } } //安值查找 int ListGetZ(SeqList L, DataType x, int *i) { int j; for (j = 0; j < ListLength(L); j++) { if (L.list[j] == x) { *i = j; return 1; } } return 0; } int main() { SeqList L; int i, x; ListInit(&L); for (i = 0; i < 10; i++) ListInsert(&L, i, i + 10); ListDelete(&L, 4, &x); for (i = 0; i < ListLength(L); i++) { ListGet(L, i, &x); printf("%d ", x); } system("pause"); return 0; }
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
相关文章
stl容器set,map,vector之erase用法与返回值详细解析
在使用 list、set 或 map遍历删除某些元素时可以这样使用,如下所示2013-09-09
最新评论