概念
线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表中的数据元素,这种表示也称做线性表的顺序储存结构或顺序映像。通常,称这种存储结构的线性表为顺序表 (quential list) 。其特点是,逻辑上相邻的数据元素,其物理次序也是相邻的。
#include <stdio.h>#include <stdlib.h>#include <asrt.h>#define max_size 1000 //顺序表能储存的最大数值typedef int data; //抽象化int类型typedef struct _list{ data *data; int leng泸沽湖图片th;} qlist;#include <stdio.h>#include <stdlib.h>#include <asrt.h>#def拾金不昧表扬通报ine max_size 1000 //顺序表能储存的最大数值typedef int data; //抽象化int类型typedef struct _list{ data *data; int length;} qlist;
//初始化顺序表qlist* initlist() { qlist* list = malloc(sizeof(qlist)); asrt(list != null); list->data = malloc(max_size * sizeof(data)); list->length = 0; //顺序表的初始长度为0 asrt(list->data != null); return list;}
头插法:
1.将表中所有数据元素向后移一位
2.将数据元素插入第 0 位
3.长度 length + 1
图解
代码
void inrtbyhead(qlist* list, data data){ if (list->length >= max_size){ printf("顺序表已满无法插入数据...\n"); return; //跳出函数 } for (int i = list->length; i > 0; i--){ list->data[i] = list->data[i-1]; } list->data[0] = data; list->length++;}
指定位置插入法:
1.将第 index 位与它后面的所有数据元素向后移动一位
2.将数据元素插入第 index 位
3.长度 length + 1
图解
代码
void inrtbyindex(qlist* list, int index, data data){ if ((index < 0 || index >= list->length) && list->length >= max_size){ printf("输入的index值错误或顺序表已满无法插入...\n"); return; //跳出函数 } for (int i = list->length; i > index; i--) { list->data[i] = list->data[i - 1]; } list->data[index] = data; list->length++;}
尾插法:
1.将数据插入第 length 位
2.长度 length + 1
图解
代码
void inrtbytail(qlist* list, data data){ if (list->length >= max_size){ printf("顺序表已满无法插入数据...\n"); return; //跳出函数 } list->data[list->length++] = data;}void inrtbytail(qlist* list, data data){ if (list->length >= max_size){ printf("顺序表已满无法插入数据...\n"); return; //跳出函数 } list->data[list->length++] = data;}
步骤
通培养学生良好的学习习惯过数值逐个比对,若表中存在相同元素则返回较前面的元素位置。
代码
int find(s1千瓦时是多少度电eqlist* list, data data){for (int i = 0; i < list->length; i++) {if (list->data[i] == data) {return i;}}return -1;}
通过值删除元素
1.找到值对应的元素下标 index
2.将第 index + 1 位与它后面的所有元素向前移动一位
3.长度 length – 1
图解
代码
void deletebydata(qlist* list, data data) {if (list->length == 0){ printf("表为空,无需进行删除...\n"); }int ret = find(list, data);if (ret != -1) {for 星周(int i = ret; i < list->length - 1; i++) {list->data[i] = list->data[i + 1];}list->length--;} el{ printf("该数据不存在,无法删除...\n"); }}
通过索引删除元素
1.将第 index + 1 位与它后面的所有元素向前移动一位
2.长度 length – 1
图解
代码
void deletebyindex(qlist* list, int index) {if (list->length == 0){ printf("表为空,无需进行删除...\n"); } if (index >= list->length){ printf("索引位置大于表的总长度...\n"); return; }for (int i = index; i < list->length - 1; i++) {list->data[i] = list->data[i + 1];}list->length--;}
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!
本文发布于:2023-04-04 18:42:54,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/9cad948720fc166a2301846bc8c40ae1.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C语言的线性表之顺序表你了解吗.doc
本文 PDF 下载地址:C语言的线性表之顺序表你了解吗.pdf
留言与评论(共有 0 条评论) |