zoukankan      html  css  js  c++  java
  • 线性表(顺序存储结构)

    线性表:它是由n个数据元素组成的有限序列。(a1,a2,...an)

    线性表的特征:

    1.有且只有一个开始元素a1,它没有前趋,只要一个直接后继。

    2.有且只有一个终端元素an,,它没有后继,只有一个直接前趋。

    3.其它元素ai(2<=i<=n-1)内部元素,都有一个直接前趋和后继。

    线性表的特征元素之间的相邻关系,也是线性关系。

    顺序结构存储,在存储单元里数据元素依次存放,顺序表可以通过基地址和每个元素所占空间计算每个元素的存储位置,并随机存取。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #define MAX 10
    #define Element int
    typedef struct list {
      Element data[MAX];
      int length;
    } List;
    
    /**
    初始化
    */
    void initList(List *arr) {
      memset(arr->data, 0, sizeof(List));
      arr->length = 0;
      return;
    }
    
    void ClearList(List *arr) {
      arr->length = 0;
    }
    
    Element getInVal(List *arr, int i) {
      if (i >= 0 && i < arr->length)
        return arr->data[i];
    }
    /**
    插入
    */
    int insert(List *arr, int i, Element val) {
      if (i < 1 || i > arr->length+1) {
        printf("position error
    ");
        return 1;
      }
      if (arr->length >= MAX) {
        printf("overflow");
        return 2;
      }
      int s;
      for(s = arr->length-1; s >= i-1; s--)
        arr->data[s+1] = arr->data[s];
    
      arr->data[i-1] = val;
      arr->length++;
    }
    
    /**
    **删除
    **/
    int delete(List *arr, int i, Element *val) {
      int k;
      if(i < 1 || i > arr->length) {
        printf("position error
    ");
        return 1;
      }
      *val = arr->data[i];
      for(k = i; k < arr->length; k++)
        arr->data[k-1] = arr->data[k];
      arr->length--;
      return 0;
    }
  • 相关阅读:
    Java中如何利用File类递归的遍历指定目录中的所有文件和文件夹
    SQL的别名和SQL的执行顺序和SQL优化
    Linux中如何配置sudo用户
    Linux的ssh的known_host文件
    Linux的SSH服务
    Linux的图形模式和文本模式以及单用户模式切换
    Linux服务器磁盘空间占满问题
    PLSQL Developer连接本地Oracle 11g数据库
    Linux常用命令学习
    OAuth2 .net MVC实现获取token
  • 原文地址:https://www.cnblogs.com/Python-233/p/14939215.html
Copyright © 2011-2022 走看看