数据结构
小学五年级在读的蒟蒻
真的很想写操作系统
展开
-
括号匹配问题
括号匹配问题将表达式入栈如果匹配到右半边则将栈顶的数据先出与之相匹对,相同则进行下一项 不同则输出数据不匹配//stack.cpp文件#include <stdlib.h>#include <iostream>using namespace std;typedef struct Stack{ char ch; struct Stack *next; /* data */} stack;stack *init_stack(){ st原创 2021-12-10 16:18:38 · 386 阅读 · 0 评论 -
线性表-元素逆置
问题:将长度为n的数组的前端k个元素逆序移动到数组后端思路同将长度为n的数组的前端k个元素保持原序移动到数组后端就是将前端的k个元素从头开始和原数组的最后下标进行交换代码如下:#include <stdio.h>void Move(int num[], int index, int length) { int temp; for (int i = 0, j = length - 1; i < index, j >= length - index; ++原创 2021-10-23 21:08:31 · 153 阅读 · 2 评论 -
线性表——逆置问题
问题:将长度为n的数组的前端k个元素保持原序移动到数组后端思路 :假设数组有01234566789十个数,则将需要移动的数组元素最后一个下标和数组下标的最后一个下标进行逆序交换如图所示:代码所示://问题:将长度为n的数组的前端k个元素保持原序移动到数组后端//思路: 123456数组 移动前四位元素 将需要移动的元素最后一个下标和数组最后的下标进行交换 依次类推#include <stdio.h>void Move(int num[], int index, int len原创 2021-10-23 20:05:22 · 191 阅读 · 0 评论 -
有个顺序表L,假设元素类型ElemType为整型,设计一个尽可能高效的算法,将所有奇数移动到偶数前面
题解:方法一:按照前后元素交换的思路,设置两个哨兵分别从前和后进行遍历,如果前面的哨兵遇到偶数 后面的哨兵遇到奇数就进行交换,直到两个哨兵相遇代码实现#include <stdio.h>#define MAX 10struct list { int num[MAX];};void swap(int *num1, int *num2) { //交换值 int temp = *num1; *num1 = *num2; *num2 = temp;}原创 2021-10-16 10:38:28 · 2256 阅读 · 0 评论 -
后缀表达式的C语言实现详解
后缀表达式什么是后缀表达式后缀表达式计算功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入什么是后缀表达式后缀表达式,又称逆波兰式,指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行(原创 2021-10-13 13:28:03 · 4663 阅读 · 1 评论 -
单链表详解
顺序表-单链表什么是单链表链表,别名链式存储结构或单链表,用于存储逻辑关系为 “一对一” 的数据。与顺序表不同,链表不限制数据的物理存储状态,换句话说,使用链表存储的数据元素,其物理存储位置是随机的,用指针表示数据之间的逻辑关系的存储结构就是链式存储结构。链表中每个数据的存储都由以下两部分组成:数据元素本身,其所在的区域称为数据域;指向直接后继元素的指针,所在的区域称为指针域链表的示意图链表的每个节点具体实现,在C语言中使用结构体typedef struct Link{原创 2021-09-30 09:55:17 · 108 阅读 · 0 评论 -
顺序表的增删查改
顺序表的常用操作顺序表插入元素首先判断顺序表的容量是否能够插入元素首部插入步骤:将顺序表的元素后移,将元素插入首部中间插入步骤:先遍历到需要插入的元素的位置,将后面所有元素向后移动,将元素插入需要插入的位置尾部插入步骤:直接取数组有效元素的下标,将元素放入元素修改数组的有效元素数量//插入函数,其中,num为插入的元素,add为插入到顺序表的位置table addTable(table t, int num, int add) { int i; //判断插入本原创 2021-09-28 21:00:10 · 61 阅读 · 0 评论 -
顺序表的详解
顺序表顺序表的要求和结构图顺序表的定义顺序表的初始化顺序表的全部代码顺序表的要求和结构图物理存储结构要求:顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。顺序表的定义#define SIZE 5typedef struct Table { int length;//记录当前顺序表的长度 int *head;//动态数组分配} *table;顺序表的初始化table init() { table原创 2021-09-28 20:09:36 · 58 阅读 · 0 评论 -
什么是线性表
线性表前言一、线性表结构图二、线性表的要求三、 线性表分类四、 线性表常用术语前言线性表,全名为线性存储结构。使用线性表存储数据的方式可以这样理解,即“把所有数据用一根线儿串起来,再存储到物理空间中”。一、线性表结构图线性表的特点从一头开始数据的位置依旧没有发生改变,所以图3a和3b的结构都是线性表二、线性表的要求使用线性表存储的数据,如同向数组中存储数据那样,要求数据类型必须一致,也就是说,线性表存储的数据,要么全不都是整形,要么全部都是字符串。一半是整形,另一半是字符串的一组数据无法使用线原创 2021-09-28 19:36:30 · 90 阅读 · 0 评论 -
数据结构概述
数据结构前言一、基本概念和术语二、抽象数据类型三、算法三、算法效率时间复杂度空间复杂度前言数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。一、基本概念和术语数据客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。数据对象性质相同的数据元素的集合,是数据原创 2021-09-28 19:22:18 · 95 阅读 · 0 评论 -
BF算法(暴力算法)
BF算法即暴力(BruteForce)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。算法思想普通模式匹配算法,其实现过程没有任何技巧,就是简单粗暴地拿一个串同另一个串中的字符一一比对,得到最终结果。代码复杂度该算法最理想的时间复杂度 O(n),n 表示串 A 的长度,即第一次匹原创 2021-09-05 23:02:10 · 7714 阅读 · 0 评论 -
基本数据结构-队列(C语言实现)
队列的概念队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。是一种先进先出的线性表插入元素称为入队;删除元素称为出队队列示意图队列的实现使用链表的实现这句代码的实际目的用一张图来表示 q->rear->next = new;#include <stdio.h>#include <stdl原创 2021-09-03 23:10:20 · 96 阅读 · 0 评论 -
基本数据结构-栈(c语言实现)
基本数据结构-栈栈是一种后进先出的线性表,是最基本的一种数据结构,在许多地方都有应用。什么是栈栈是限制插入和删除只能在一个位置上进行的线性表。其中,允许插入和删除的一端位于表的末端,叫做栈顶(top),不允许插入和删除的另一端叫做栈底(bottom)。对栈的基本操作有 PUSH(压栈)和 POP (出栈),前者相当于表的插入操作(向栈顶插入一个元素),后者则是删除操作(删除一个栈顶元素)。栈是一种后进先出(LIFO)的数据结构,最先被删除的是最近压栈的元素。栈就像是一个箱子,往里面放入一个小盒子就相当原创 2021-09-02 17:25:37 · 185 阅读 · 0 评论