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;
    }
  • 相关阅读:
    全面分析 Spring 的编程式事务管理及声明式事务管理
    100句唤醒自己的励志名言
    100句自我激励的名言佳句
    java反射详解
    JAVA中的反射机制
    【BZOJ1015】【JSOI2008】星球大战Starwar(离线并差集)
    【HEOI2016/TJOI2016】排序(二份答案+线段树)
    【USACO06DEC】—牛奶模式Milk Patterns(后缀自动机)
    【HNOI2016】—找相同字符(后缀自动机)
    【AHOI2013】—差异(后缀自动机)
  • 原文地址:https://www.cnblogs.com/Python-233/p/14939215.html
Copyright © 2011-2022 走看看