这篇文章给大家分享的是C语言顺序表的实现,本文会有详细的思路及步骤介绍,文中示例代码也介绍的很详细,对大家学习和理解C语言的顺序表的实现有一定的参考价值,那么接下来感兴趣的朋友就跟随小编一起学习一下吧。
代码如下:
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 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 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; }
关于C顺序表的实现就介绍到这,上述示例具有一定的借鉴价值,感兴趣的朋友可以参考,希望能对大家有帮助,想要了解更多C语言的内容,大家可以关注其它的相关文章。
文本转载自PHP中文网
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。