数据结构
用c语言实现一些常用的数据结构
weixin_43876924
这个作者很懒,什么都没留下…
展开
-
02_顺序表的操作
一、顺序表操作——初始化顺序表 bool initTable(List * list){ list->length = 0; list->MaxSize = InitialSize; list->data = (ElemType *)malloc(sizeof(ElemType)*InitialSize); if (list->data == NULL) return false; return true; } 所谓的顺原创 2021-04-28 03:02:23 · 60 阅读 · 0 评论 -
05_双链表
一、双链表的定义 双链表是由一个个节点组成,其数据项如下: typedef struct node{ struct node * prior; //执行前驱节点 ElemType data; //数据域 struct node * next; //指向后继节点 }Node, * LinkedList; 二、双链表的操作函数 双链表和单链表的操作并没有太大的区别,而且因为多了一个前驱指针,反而更加方便了 1、必备函数 (1)判断链表是否为空 (2)判断addr是否在链表之中原创 2021-05-04 00:45:55 · 82 阅读 · 0 评论 -
07_静态链表
文章目录一、什么是静态链表?二、定义静态链表的结构体?三、操作函数1、必备函数2、基础函数四、总结 一、什么是静态链表? 静态链表:分配一整片连续的内存空间,各个节点集中安置 二、定义静态链表的结构体? typedef struct node{ ElemType data; int cur; //游标:指向下一个”节点“ }Node,StaticList[MAXSIZE]; 三、操作函数 1、必备函数 (1)判断链表是否为空 (2)求链表长度 (3)判断addr是否在区间中 (4.原创 2021-05-05 23:09:11 · 59 阅读 · 0 评论 -
06_循环单链表
文章目录一、什么是循环单链表?二、需要使用的函数?1、必备函数2、基础函数三、总结 一、什么是循环单链表? 就是尾节点的next指针域存放的是头节点的地址 二、需要使用的函数? 1、必备函数 (1)判断链表是否为空 (2)判断addr是否在链表中 (3)求链表长度 (4)定位到addr的前一个节点 (5)新建一个节点 (6)增加一个节点 (7)删除一个节点 2、基础函数 (1)初始化链表 (2)根据元素返回addr (3)插入一个新的元素 (4)遍历链表 (5)删除指定元素 //.原创 2021-05-04 10:01:40 · 46 阅读 · 0 评论 -
04_单链表的创建
一、为什么需要建立单链表? 单链表的创建放在这儿并不是顺序搞错了 而是因为我们之前学习的单链表的插入操作是对单链表中元素的操作 并且单链表的创建依赖单链表中插入元素的知识 二、如何建立单链表? 1、尾插法建立单链表 Status create_list_tail(LinkedList head){ Node * temp_tail = head; char ch = 'y'; while (ch == 'y' || ch == 'Y'){ //1 输入要插入原创 2021-05-04 00:44:10 · 63 阅读 · 0 评论 -
03_单链表及其基本操作
一、什么是单链表 用自己得到话来说: 1、全称是 单方向链表 2、它是由节点组成的,每个节点包括两个部分,数据域 和 指针域 数据域:存储的数据元素 指针域:存储的是另外一个节点在内存中的地址 二、单链表的定义 typedef struct node{ ElemType data; //数据域 struct node* next; //指针域 }Node, * LinkedList; 三、单链原创 2021-04-30 01:09:32 · 136 阅读 · 0 评论 -
01_顺序表
一、什么是顺序表 就是将所有元素存储在一块连续的内存空间中 二、顺序表的分类 1、静态分配存储 typedef struct{ ElemType data[MaxSize]; //数组 int length; //数组长度 }StaticTable; 缺点:空间分配之后,就不可以改变空间的容量 2、动态分配存储 typedef struct{ ElemType * data; //指示动态分配数组的指针原创 2021-04-28 02:55:47 · 36 阅读 · 0 评论