数据元素在计算机中的存储分为顺序存储和链式存储
顺序存储:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系
链式存储:借助指示元素存储地址的指针表示数据元素之间的逻辑关系
ps:谭浩强版c语言涉及8.8内存的动态分配与静态分配
动态分配:数据存储容量不固定(谭浩强:8.8P285 动态分配是需要时随时开辟,不需要时随时释放)
谷歌搜索动态分配的连续存储:(64页)通过程序设计语言提供的动态存储功能,申请一组指定大小的连续空间
静态分配:数据存储容量固定
谷歌搜索静态分配的连续存储:(64页)程序设计语言提供的构造类数据类型---数组(顺序表)
ps:严魏敏版章节区分为顺序表和链表的实现,仅仅有动态分配的顺序存储没有静态分配的顺序存储,但是本人认为代码实现不仅限于顺序表和线性表的实现,更应该严格地区分为四类,动态分配的顺序存储、静态分配的顺序存储、动态分配的链式存储、静态分配的链式存储,且顺序表和链表的划分并不等同于顺序存储和链式存储的划分,所以本篇会介绍基于静态分配和动态分配的顺序存储和链式存储
线性表基于动态分配的顺序存储结构--严魏敏(抄书原文p22)
(实现方法:结构体成员表列用指针和动态开辟数组)https://www.cnblogs.com/Romi/archive/2012/01/07/2315788.html
1.顺序表构造
顺序表构造前进行如下宏定义和变量替换,方便代码的理解:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
采用结构体构造一个顺序表,定义顺序表的地址、长度、存储容量的表示,代码如下:
1 2 3 4 5 |
|
2.顺序表的初始化
接下来对该顺序表进行初始化,为顺序表分配一个预定义大小的数组空间,并将当前顺序表长度设为0,如果元素个数大于分配的存储容量则再对容量进行扩充(初始化时不扩充,顺序表使用中按需要进行容量扩充)。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
线性表基于静态分配的顺序存储结构--
(实现方法1:结构体成员表列用静态数组)仅作参考https://www.cnblogs.com/newwy/archive/2010/10/10/1847449.html
https://blog.csdn.net/zwj1452267376/article/details/85011271
静态分配内存:
const int Maxsize = 100;//定义表格的最大长度
//ElemType表示存储元素的类型
typedef struct{
ElemType data[MaxSize];//顺序表中的元素
int length;//顺序表的当前长度
}Sqlist;
(实现方法2:严魏敏(静态链表实现抄书原文p31)争议处理:https://ask.csdn.net/questions/274643?ops_request_misc=%7B%22request_id%22%3A%22158195017719725256734898%22%2C%22scm%22%3A%2220140713.130063897..%22%7D&request_id=158195017719725256734898&biz_id=4&utm_source=distribute.pc_search_result.none-task
StaticLinkList.h
#ifndef _STATIC_LINK_LIST_H_
#define _STATIC_LINK_LIST_H_
#define MAXSIZE 100
typedef enum {ERROR,OK}Status;
typedef struct{
int cur;
int data;
}StaticLinkList[MAXSIZE];
线性表基于动态分配的链式存储结构--严魏敏(抄书原文p28)
(实现方法1:定义结构体成员为指针)
//-----线性表的单链表存储结构-----
typedef struct LNode { //自定义数据类型
ElemType data ; //数据域
struct LNode *next ; //指针域
} LNode, *LinkList ;
(实现方法2:定义结构体成员为指针)https://www.cnblogs.com/choon/p/3915706.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
线性表基于静态分配的链式存储结构--谭浩强(p310)
(实现方法:结构体成员为指针)
https://www.cnblogs.com/choon/p/3915706.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|