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

来源:互联网 发布:网络用户管理系统注册 编辑:程序博客网 时间:2024/06/05 18:10

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

线性表

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

顺序表实战代码

#include <iostream>using namespace std;#define Initsize 100typedef 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;}
原创粉丝点击