线性表的顺序存储结构

Posted 雷八天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表的顺序存储结构相关的知识,希望对你有一定的参考价值。


     (严蔚敏的课本代码准确的来说应该是基于c++的;  目测就我观察而言,c语言实现不了引用的编译 此处所传的参数均为形参类型&形参名)
  •     线性结构:
    1. 有唯一的一个第一个元素
    2. 唯一的一个最后一个元素
    3. 除第一个元素,每个元素有且只有一个直接前驱
    4. 出最后一个元素,每个元素有且只有一个后继
  •     线性表:n个数据的有限序列
  •     线性表的顺序结构:用一个连续的物理存储空间依次存储线性表中的n个元素
  •     线性表顺序结构为什么要用数组进行表示:数组和线性表具有相同的随机存取的特性,即只需要知道第一个元素的位置
    后面元素位置等于Loc(a1)+ (K-1)*l /*线性表的顺序存储结构*/ #define LIST_INTI_SIZE 100 #define LISTINCREASE 10 #define ERROR 0 #define OK 1 typedef int Status;
typedef struct     int * elem;     int length;     int listsize; SeqList; /*线性表的顺序存储结构*/
#include <stdio.h>; #include <stdlib.h>; #include "SeqList.h"; Status ListInit_Seq(SeqList & L)     //初始化一个空的线性表     //动态分配线性表的内存     L.elem = (int *)malloc(LIST_INTI_SIZE * sizeof(int));     if (!L.elem) exit(0);     //设置初始线性表元素的个数     L.length = 0;     //设置初始化线性表的内存容量(一个数据所占用的内存作为单位)     L .listsize = LIST_INTI_SIZE; Status ListInsert_Seq(SeqList * L , int i , int e)     //插入索引值为中文索引     //数组索引值为引文索引     //插入位置1-length+1     if (i < 1 || i > (*L).length + 1)         return ERROR;          //判断当前线性表的存储空间是否满     if ((*L).length >= (*L).listsize)         (*L).elem = (int *)realloc((*L).elem, LISTINCREASE * sizeof(int));         if (!(*L).elem)             exit(0);         (*L).listsize += LISTINCREASE;          //执行插入操作     for (int j = (*L).length; j >= i - 1; j--)         (*L).elem[j + 1] = (*L).elem[j];          (*L).elem[i - 1] = e;     (*L).length++;     return OK; Status ListDelete_Seq(SeqList & L , int i, int & e)     //删除位置为1-length     if (i < 1 || i > L.length)         return ERROR;          //执行删除操作     e = L.elem[i - 1];     for (int j = i; j < L.length; j++)         L.elem[j - 1] = L.elem[j];          L.length--;     return OK; Status ListOut_Seq(SeqList L)     for (int i = 0; i < L.length; i++)         printf("%d ", L.elem[i]);          printf("\\n");     return OK; int main()     SeqList L;     //初始化线性表     ListInit_Seq(L);     //插入元素0-9     for (int i = 0; i < 10; i++)         ListInsert_Seq(&L, i+1, i);          ListOut_Seq(L);     //删除第1个元素     int e;     ListDelete_Seq(L, 1, e);     ListOut_Seq(L);     printf("%d",e);     system("pause");

以上是关于线性表的顺序存储结构的主要内容,如果未能解决你的问题,请参考以下文章

数据结构——线性表之顺序存储结构

线性表之顺序存储结构实现(上)

《数据结构》复习之线性表(顺序表和链表)

线性表的顺序存储结构之顺序表类的实现_Java

数据结构

数据结构