![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C数据结构
线性表、二叉树
「已注销」
这个作者很懒,什么都没留下…
展开
-
C 循环队列(顺序式)
循环队列队列跟栈的区别循环队列要整明白的几个地方代码config.hqueue.cmainPro.c队列跟栈的区别不管是顺序栈还是链式栈,我们使用栈是只对顺序表的一端进行插入或删除元素,而队列是对顺序表的两端操作,一端进,另一端出循环队列要整明白的几个地方1、用结构体管理队列比较容易实现2、入队前判断队列是否为满3、队满时要特别注意,队列的空间是可以复用的,复用方法就是调整它的下标4、出队时要判断队列是否为空5、清空队列,可以用memset对数组初始化,同时也通过调整下标,让它回到初始状原创 2021-09-09 12:08:52 · 97 阅读 · 0 评论 -
C 链式栈
链式栈简单实现链式栈代码config.hlinkStack.cmainPro.c简单实现链式栈顺序栈是对顺序表的一端操作,那么链式栈则是对链表的一端操作要达到后进先出这个条件,用链表头插法,再用链表头删法比较容易实现,头插法进栈要考虑栈是否满了,头删法出栈要考虑栈是否为空代码config.h#ifndef _CONFIG_H#define _CONFIG_Htypedef int Data_t;struct Node{ Data_t data; struct Node *next原创 2021-09-08 21:24:39 · 86 阅读 · 0 评论 -
C 顺序栈
顺序栈顺序栈原理代码config.hstack.cmainPro.c顺序栈原理代码config.h#ifndef _CONFIG_H#define _CONFIG_Htypedef int Data_t;typedef struct{ Data_t *data; int maxLen; int top;}Stack;Stack *stack_init(int len);int stack_ifFul(Stack *s);int stack_push(Stack *s, Da原创 2021-09-08 12:56:37 · 62 阅读 · 0 评论 -
C 单向链表排序
链表排序链表排序的两种方式一、交换结点的数据域二、断开链表,重新形成方法示例链表排序的两种方式一、交换结点的数据域有很多种方法,比如冒泡排序,选择排序等其他排序方法struct Node *link_sort(struct Node *head){ int value; struct Node *p = head; struct Node *q = NULL; while(p) { q = p->next; while(q) { if(p->data &g原创 2021-09-06 17:01:32 · 2609 阅读 · 1 评论 -
C 三指针法单向链表反转(带头结点)
链表反转思路示例代码思路链表为空和只有一个头结点不用反转定义三个指针1、第一个指针指向头结点的下一个的下一个结点,并且断开下一个结点点的连接2、第二个指针指向第一个指针指向的下一个,用于遍历链表3、第三个指针用于循环体中,完成头插操作示例代码#include <stdio.h>#include <stdlib.h>#include <string.h>struct Node{ int data; struct Node *next;};原创 2021-09-04 16:53:10 · 171 阅读 · 0 评论 -
C 双向循环链表(带头结点)
双向循环链表链表初始化头节点头插法插入新节点尾插法插入新节点指定数据域删除节点链表初始化头节点#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *prev; struct Node *next;}Link;Link *initLink(){ Link *head = (Link *)malloc(sizeof(Link)); if(head !=原创 2021-08-30 09:47:12 · 83 阅读 · 0 评论 -
C 实现双向链表(带头结点)
双向链表题目步骤移动节点代码示例题目用双向链表实现:将输入的数值按特定规则排序,格式为基数靠左且依次增大,偶数靠右且依次减少如:依次输入 1 2 3 4 5 6 输出 1 3 5 6 4 2步骤双向链表的使用步骤:1、初始化链表:创建头节点(判断申请空间是否成功,让它的前后指针指向空)2、创建新节点(判断申请空间是否成功,数据的赋值等等操作)3、尾插法插入新节点4、完成特定任务5、遍历链表,打印结果移动节点双向链表的节点移动,包含了断开节点和插入节点的操作断开节点之后如果不用了,原创 2021-08-28 23:11:01 · 276 阅读 · 0 评论 -
C 单向链表实现贪吃蛇游戏
贪吃蛇小游戏实现步骤ncurses图形库下载示例代码实现步骤1、使用ncurses图形库的基础框架、测试键盘按键响应2、地图的规划,主要是确定链表的活动范围3、蛇身的初始化,确定蛇的开始位置4、蛇身的移动及地图刷新,链表的插入新节点、删除尾节点5、键盘控制蛇的走向,线程的使用6、游戏的规则制定,例如撞墙、咬到自己、不可以后退等7、食物的设置8、计时、得分等ncurses图形库下载在linux环境下安装:sudo apt-get install libncurses5-dev示例代码原创 2021-08-29 10:15:46 · 216 阅读 · 0 评论 -
C 单向循环链表(带头结点)
带头结点的单向循环链表链表的初始化头插法插入新节点形成链表尾插法插入新节点形成链表指定节点之前插入新节点指定节点之后插入新节点删除指定节点删除整条链表链表的初始化#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;}Link;Link *initLink(){ Link *head = (Link *)malloc(sizeof(Link)原创 2021-08-29 14:09:20 · 362 阅读 · 0 评论 -
C 单向链表(带头结点)
带头结点的单向链表链表的头节点初始化头插法插入新节点形成链表尾插法插入新节点形成链表指定节点之前插入新节点指定节点之后插入新节点删除指定数据域的节点删除整条链表链表的头节点初始化#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;}Link;Link *initLink(){ Link *head = (Link *)malloc(size原创 2021-08-28 23:05:51 · 59 阅读 · 0 评论 -
C 单向链表(不带头结点)
单向链表不带头节点带头节点和不带头节点的小区别创建链表及头插法插入新节点创建链表及尾插法插入新节点在指定数据域前插入新节点在指定数据域后插入新节点指定数据域删除节点删除整条链表带头节点和不带头节点的小区别带头节点:链表的头节点不直接存储有效数据,而是在头节点的下一个才开始存储有效数据,为了方便管理,链表的头节点可以存储整条链表的节点的个数不带头节点:从链表的头节点直接开始存储有效数据无论带头节点和带不带头结点,链表头还是有的创建链表及头插法插入新节点#include <stdio.h>原创 2021-08-28 23:04:30 · 208 阅读 · 0 评论 -
C 顺序表
顺序表简述(优缺点)操作的步骤示例代码listConfig.hlistFunc.cmainPro.c简述(优缺点)顺序表的优点:一般是通过结构体管理数组和数组的下标,可以随机访问数据,链表则需要遍历缺点:删除或插入元素时,数据成片移动,效率较低操作的步骤1、创建顺序表2、表的初始化3、插入新元素4、遍历展示(查询)5、删除新元素6、重置表7、其他操作后续更新采用分文件编程的方式实现对顺序表的操作,像简单工厂模式编程思想,作用文字概括是:1、使main函数整洁,可读性提升2、分模块原创 2021-09-03 23:36:41 · 80 阅读 · 0 评论 -
C 数据结构
数据结构学习经历思维导图学习经历迄今,我已经自学了两个星期了,从刚开始的无从下手,到逐渐有了一些启迪,回顾这段时间,我一开始是在B站搜视频来看,很多up主的视频讲的挺好的,至少我能听的明白,最关键的是边讲边手撕代码,虽然没有延申太多的概念,总的来说是注重操作,但最近一个星期,我同学跟我说:“啊,借本数据结构与算法分析的书给你,要不就去慕课找精品来看“,我信了,我看了两天的ppt,一上来就将讲算法和一大串的概念,我听的不明白,发现这样下去不太行,然后我就离开了,我是觉得,刚开始如果学习能力不是很强的话就去原创 2021-09-03 22:27:26 · 57 阅读 · 0 评论