结构算法 001 线性表的顺序存储--顺序表

xiaoxiao2021-02-28  75

线性表的顺序存储–顺序表

线性表

顺序存储 顺序表链式存储 单链表(指针实现)双链表(指针实现)循环链表(指针实现)静态链表(借助数组实现)

顺序表实战代码

#include <iostream> using namespace std; #define Initsize 100 typedef int elemtype; //类型重定义,就是给int改了个名字,这样做,以后改数据类型的时候很容易 typedef struct { elemtype *data; int MaxSize,length; }SeqList; //假设客户不知道从零开始,他眼里只有位置1,位置2……,(没有位置0) //但是计算机存储是从0号存储单元开始的,所以要注意转换。 bool ListInsert(SeqList &L,int i,elemtype e) // 把e插入第i个位置 { if (i<1 || i>L.length+1) return false; if (L.length>=L.MaxSize) return false; for (int j=L.length;j>=i;j--) L.data[j]=L.data[j-1]; L.data[i-1]=e; L.length++; return true; } bool ListDelete(SeqList &L,int i) //删除第i个位置的元素 { if (i<1||i>L.length) return false; for (int j=i;j<L.length;j++) L.data[j-1]=L.data[j]; L.length--; return true; } int ListkFind(SeqList &L,elemtype e) //值为e的元素在哪一个位置? { for (int j=0;j<L.length;j++) if (L.data[j]==e) return ++j; //能找到这个元素的话,在这里就执行完啦,跳出函数。 // 找不到的话当然不执行这个return。就要继续向下执行了。 //注意j++和++j不一样,这里不能写成j++ return false; } int main() { SeqList L; //以下四句是初始化 L.data=new elemtype[Initsize]; L.MaxSize=100; L.length=0; //表示当前线性表中的元素数量。 for (int i=0;i<20;i++) ListInsert(L,i+1,i); cout<<"*******"<<endl; cout<<ListkFind(L,14)<<endl; //理论上应该返回代表位置的数字“15” cout<<"*******"<<endl; ListDelete(L,3); //理论上应该是2不见了。 for (int i=0;i<20;i++) cout<<L.data[i]<<endl; }
转载请注明原文地址: https://www.6miu.com/read-82092.html

最新回复(0)