详解C语言之顺序表
程序员文章站
2022-03-24 08:33:28
目录一、思维导图二、步骤1.初始化2.求表长3.插入数据元素4.删除数据元素5.取出数据元素按位查找按位查找所有代码总结一、思维导图二、步骤1.初始化代码如下:void listinit(seqlis...
一、思维导图
二、步骤
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; }
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
上一篇: C语言中的初阶指针详解