数据结构
文章平均质量分 59
本专栏是我学习数据结构的笔记,会持续更新,如果有错误希望大家发现后在评论区留言。
十七阿哥的春天
部分内容仅对粉丝可见,请前往分类专栏进行查看。
展开
-
C语言与数据结构相关习题整理
C语言与数据结构相关习题整理选择题填空题编程题选择题1、一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是( ) [A] edcba [B] decba [C] dceab [D] abcde答案:C2、以下为 linux 下的 32 位 C 程序,请计算 sizeof 的值char str[10] = “Hello” ; char *p = str ;请计算:sizeof ( str ) = 10void Func ( char str[100]){……}原创 2021-08-18 22:21:02 · 984 阅读 · 0 评论 -
0、顺序存储的线性表
本专栏代码均在ubutun系统中测试过,源码可以执行以下命令在终端执行进行克隆git clone https://github.com/celery1798/coder210714一、线性表线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。线性表特征:(数据元素之间具有一种“一对一”的逻辑关系。)第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一个和最后一个数据元素外,其他数据元原创 2021-08-13 12:28:07 · 314 阅读 · 3 评论 -
1、链式存储的线性单链表
一、线性表线性表特征:第一个数据元素没有前驱,这个数据元素被称为头结点;最后一个数据元素没有后继,这个数据元素被称为尾结点;除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。1、链式存储的线性表:单链表单向链表是链表的一种,它由多个结点组成,每个结点都由一个数据域和一个指针域组成,数据域用来存储数据, 指针域用来指向其后继结点。链表的头结点的数据域不存储数据,指针域指向第一个真正存储数据的结点。1.1 无头结点的单项不循环链表1.2 带头结点的单项不循环链表.原创 2021-08-02 21:18:02 · 271 阅读 · 0 评论 -
1.1 实现单链表逆序操作
编写函数,实现带头结点的单链表逆序操作。(要求:不申请新的空间,在原有空间上进行逆序)例:若原链表顺序为 3->6->2->5->7->8,逆序后顺序为 8->7->5->2->6->3。void list_reverse(LIST *ptr) { LIST *p,*q,*r; if(ptr->next == NULL || ptr->next->next == NULL) return ; p = ptr原创 2021-08-18 09:00:48 · 387 阅读 · 0 评论 -
1.2实现两个多项式相加(单项不循环链表)
链表实现两个多项式合并(有头结点单项不循环链表)1、结构体构建typedef struct node_st{ int coef; int exp; struct node_st *next;}POLY;2、申请两个二维数组空间POLY *poly_create(int (*a)[2],int m){ POLY *head,*p,*q; int i; head = malloc(sizeof(*head)); if(head == NULL) return NULL;原创 2021-08-14 18:32:45 · 338 阅读 · 1 评论 -
2、链式存储的双向循环链表
双向链表双向链表也叫双向表,是链表的一种,它由多个结点组成,每个结点都由一个数据域和两个指针域组成,数据域用 来存储数据,其中一个指针域用来指向其后继结点,另一个指针域用来指向前驱结点。链表的头结点的数据域不存 储数据,指向前驱结点的指针域值为null,指向后继结点的指针域指向第一个真正存储数据的结点。1、带头结点的双向循环链表每个结构体都知道自己的前驱和后继空表:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mVTQ9JFJ-1628123529840)(D:原创 2021-08-05 08:35:43 · 367 阅读 · 0 评论 -
3、栈(先进后出)_顺序/链式方式存储
栈(先进后出)我们把生活中的栈的概念引入到计算机中,就是供数据休息的地方,它是一种数据结构,数据既可以进入到栈中, 又可以从栈中出去。1、计算机中的栈栈是一种基于先进后出(FILO)的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出 的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一 个数据被第一个读出来)。 我们称数据进入到栈的动作为压栈,数据从栈中出去的动作为弹栈。2、顺序存储的栈先进后出:栈顶的位置会一直改变2.1原创 2021-08-09 16:49:28 · 1442 阅读 · 0 评论 -
4、队列(先进先出)_顺序/链式存储
文章目录队列(先进先出)1、方法构建2、顺序存储的队列2.1 队列的创建(malloc)2.2 入队、判满条件2.3 出队、判空条件2.4 销毁2.5 main.c(部分)3、链式存储的队列3.1 队列的创建(链式存储)3.2 入队、判满条件3.3 出队、判空条件3.4 销毁3.5 main.c(略)队列(先进先出)队列是一种基于先进先出(FIFO)的数据结构,是一种只能在一端进行插入,在另一端进行删除操作的特殊线性表,它 按照先进先出的原则存储数据,先进入的数据,在读取数据时先读被读出来。1、方原创 2021-08-09 17:22:17 · 1243 阅读 · 0 评论 -
5、c语言四则计算器(包括括号)
文章目录**C语言四则( ' + ' , ' - ' , ' * ' , ' / ')计算器,包括括号**1、思路:2、代码2.1 主函数_main.c2.2 没有括号的运算函数_deal_op(snum,sop,str[i])2.3 遇到右括号时运算的函数_deal_bracket(STACK *snum, STACK *sop)2.4 结果运算函数_compute(STACK *snum, int op)2.5 设置运算符优先级函数_get_pri(int op)2.6 static.c 的所有函数原创 2021-08-09 22:18:53 · 2956 阅读 · 3 评论 -
6、c语言实现求钟算法
c语言实现求钟算法1、题目要求:2、主函数_main.c#include <stdio.h>#include <stdlib.h>#include "queue.h"#include "stack.h"int main(){ STACK *st_hour,*st_fivemin,*st_min; QUEUE *qu; int time = 0,i,ball,tmp; st_hour = stack_create(); /*if error*/ st_原创 2021-08-09 22:25:50 · 223 阅读 · 0 评论 -
7、树、二叉树以及代码构建
本篇博客部分图片来自《黑马程序员数据结构资料》,如有侵权,请联系我。树1、树的基本定义树是我们计算机中非常重要的一种数据结构,同时使用树这种数据结构,可以描述现实生活中的很多事物,例如家 谱、单位的组织架构、等等。树是由n(n>=1)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就 是说它是根朝上,而叶朝下的。1.1 树的相关术语略,自行CSDN搜索;2、二叉树二叉树就是度不超过2的树(每个结点最多有两个子结点)每个节点有且最多有两个节点2.原创 2021-08-11 18:14:36 · 947 阅读 · 3 评论 -
8、二叉树删除结点(史上最简洁)
本程序可以删除叶子节点,根节点,以及其它任何位置的结点,看代码,本源码来自“李慧芹”老师void delete(struct node_st **root, int id){ struct node_st **node = root; struct node_st *cur; while( (*node) != NULL && (*node)->data.id != id ) { if( id < (*node)->data.id ) node原创 2021-08-12 09:58:54 · 137 阅读 · 0 评论 -
9、静态库和动态库构建
1、静态库静态库名称:libxxx.a(xxx代表库的名称)1.1 静态库的生成ar -cr libxx.a yyy.o //libxxx.a是库的名称,yyy.o 是目标文件ar -cr libllist.a llist.o //llist是我们的库代码执行之后会出现如下文件:1.2 库的保存mv llist.h /usr/local/include //include保存头文件的位置mv libllist.a /usr/local/lib //lib保存库的位置原创 2021-08-12 14:08:20 · 158 阅读 · 0 评论