C语言-12
认识线性表
/* 1.线性表: ---数据结构中最简单的一种存储结构,专门用于存储逻辑关系为"一对一"的数据 2.线性表存储结构,可细分为"顺序存储结构"和"链式存储结构",即如下所示 线性表: 1.顺序表(顺序存储结构) 2.链表(链式存储结构) 3.存储的类型要求 使用线性表存储的数据,如同向数组中存储数据那样要求数据类型必须一致 线性表存储的数据,要么全部都是整型,要么全部都是字符串 一半整型,另一半是字符串的一组数据无法使用线性表存储 4.前驱与后继: 一组数据中的每个个体被称为“数据元素”(简称为“元素”) 1.前驱 某一元素的左侧相邻元素称为“直接前驱”,位于此元素左侧的所有元素都统称为“前驱元素” 2.后继 某一元素的后侧相邻元素称为“直接后继”,位于此元素右侧的所有元素都统称为“后继元素” */


认识顺序表
/* 顺序表: ---它对数据的物理存储结构有要求 顺序表存储数据时,会提前申请一块足够大小的内存 然后将数据依次存储起来 存储时做到数据元素之间不留一丝缝隙(即:连续) */
初始化顺序表
# include <stdio.h> # include <malloc.h> // 定义表格类型 typedef struct { int* head; // 指针,存储申请的内存首地址 int length; // 当前数据个数 int size; // 元素个数(最大容量) }Table; // 生成表格的函数 Table tableFunc() { Table t; // 定义一个变量 t ,其类型为“表格类型” // t 表格的初始化 t.size = 5; // 表格最大容量(元素个数) = 5 t.length = 0; // 表格当前数据个数(元素个数)= 0 t.head = (int*)calloc(t.size,sizeof(int)); // 为表格开辟内存,并把内存首地址赋值给 t.head // 注意!上面的申请内存操作可能会出现申请失败的情况,返回值为 NULL if (!NULL) { printf("申请内存失败,程序终止!\n"); exit(0); } return t; // 返回 t 表格 } int main() { Table myTab = tableFunc(); printf("%d \n", myTab.size); printf("%d \n", myTab.length); printf("%X \n", myTab.head); // 内存地址一般用 %X 十六进制展示 return 0; }
顺序表的增、删、查、改