赞
踩
注:以下只记录了静态顺序表的内容!写此博客其目的为记录学习的内容。本人仅为一名计算机小白,如有需改善之处,请大佬指正。
顺序表,顾名思义就是有许多数据元素按照顺序存储结构在存储在线性表中!其实就是这样:(表中含有i个小表情)
... | ... | i |
对应的下标: 0 1 2 3 4 ... ... i-1
即该顺序表的长度为i,也就是说顺序表的第i个元素对应的数组下标为i-1,因为顺序表通常使用一维数组来实现,以至于顺序表在他出生的那一刻就已经确定了他的长度,即顺序表的长度确定!
1.顺序表的结构定义:
- #define M 520 //定义一个最多存储520个元素的顺序表
- typedef int DataList; //定义int型线性表
- typedef struct{ //创建结构体
- DataList data[M]; //用于存放数据元素的一维数组
- int length; //表长
- }SeqList;
2.初始化
- void InitList(SeqList *L){
- L->length = 0; //将表长初始化为0
- }
3.查找
(1)按值查找
- int Getnum(SeqList *L,Data num){
- for(int i=0;i<L->length;i++){
- if(L->data[i] == num)
- return i+1; //返回值所在的位置序号
- }
- return 0;
- }
(2)按位查找
- int Getlocate(SeqList *L,int i,Data *num){
- if(i<1||i>L->length){ //判断非法查找位置
- return 0;
- }else{
- *num = L->data[i-1];
- return 1;
- }
- }
4.插入操作
从最后一个元素开始一直到待插位置i,逐个往后移。
L->data[j] = L->data[j-1];
使第i个位置为空,将元素num填入其中即可。
完整算法实现
- //i为插入位置,num为待插元素
- int insert(SeqList *L,int i,Data num){
- if(L->length >= M||i<1||i>L->length+1){
- return 0;
- }
- int j;
- for(j = L->length;j>=i;j--){
- L->data[j] = L->data[j-1];
- L->data[i-1] = num;
- L->length++;
- }
- return 1;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。