zoukankan      html  css  js  c++  java
  • 顺序表

    顺序表作为数据结构的入门知识应该熟练掌握

    1.线性表是什么?

    答;类比队伍,它就是一群人在站队。有头、有尾、中间的前面后面有唯一一个人,这也是它的逻辑结构。同时它的物理结构是一块连续的物理内存。支持随机访问每个元素,但它的存储分配只能预先进行,即静态分配。

    2.线性表可以用来干什么?

    答:最简单的哈希表,每个序号代表一个元素。

      系列的操作如查找、插入、删除

    #include <stdio.h>
    #include <stdlib.h>
    #define maxsize 100

    /*顺序表的结构体定义*/
    typedef struct
    {
    int data[maxsize];
    int length;
    }Sqlist; //sqlist 是自己定义的一种数据类型

    /*初始化顺序表*/
    void initlist(Sqlist & L)
    {
    L.length =0;
    }

    /*遍历线性表*/
    void traList (Sqlist L)
    {
    int i;
    for(i=0;i!=L.length ;++i)
    {
    printf("%d ",L.data[i]);
    }
    printf(" ");
    }
    /*按元素值查找该元素的位置*/
    int findElem(Sqlist L,int e)
    {
    int i;
    for(i=0;i<L.length;++i)//数组下标从0到L.length-1,顺序表从1到L.length
    if(e==L.data[i])
    return i; //表中的位置为数组的序号加1
    return -1;
    }

    /*插入元素*/
    int insertElem(Sqlist & L,int p,int e)
    {
    int i;
    if(p<0||p>L.length-1||L.length==maxsize)
    return 0;
    for(i=L.length -1;i>=p;--i) //从P开始的元素后移
    L.data[i+1]=L.data[i];
    L.data[p]=e;
    ++L.length;
    return 1;
    }

    /*删除元素*/
    int deleteElem(Sqlist &L,int p,int &e)
    {
    int i;
    if(p<0||p>L.length-1||L.length ==0)
    return 0;
    e=L.data [p];
    for(i=p;i<L.length -1;++i)
    L.data [i]=L.data [i+1];
    --L.length ;
    return 1;
    }

    int main()
    {
    int i;
    Sqlist L={{3,5,2,16,13,53,56,7},8};//定义顺序表时赋值
    traList(L);

    printf("查找元素13的位置 ");
    i=findElem(L,13);
    printf("该元素的位置%d ",i);

    printf("顺序表的第二个位置插入元素1 ");
    insertElem( L,1,1);
    traList(L);

    printf("删除顺序表的的五个元素 ");
    deleteElem(L,4,i);
    traList (L);

    system("pause");
    return 0;
    }

  • 相关阅读:
    Linux找回root密码
    关于Linux的随笔笔记
    需求征集系统进度03
    需求征集系统进度02
    需求征集系统进度01
    第六周总结
    阅读笔记03
    第一周总结
    第五周总结
    阅读笔记02
  • 原文地址:https://www.cnblogs.com/Star-Lit/p/8338226.html
Copyright © 2011-2022 走看看