数据结构笔记
数据结构算法
言蹊X
这个作者很懒,什么都没留下…
展开
-
堆排序C++
堆排序原创 2023-11-06 23:55:47 · 122 阅读 · 0 评论 -
前后缀表达式求值顺序栈C语言
前后缀表达式求值顺序栈C语言原创 2023-09-19 21:52:00 · 351 阅读 · 0 评论 -
树的非递归遍历以及基本操作
#include<stdio.h>#include<stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define MAXSIZE 100typedef int Status;typedef char ElemType;typedef struct Node{char data;struct Node* lchild, * rchild;}*BiTree, BiNode;ty原创 2020-05-26 15:02:45 · 161 阅读 · 0 评论 -
有序单链表的合并
有序单链表的合并原创 2023-03-13 15:32:23 · 124 阅读 · 0 评论 -
DFS(邻接矩阵存储)
/************date:2023-03-05version:1.0author:lrDescription:采用邻接矩阵存储图,进行图的深度优先搜索并输出结果**************/#include#include#define MAX 100typedef struct { int vexnum, arcnum; int vertex[MAX];//顶点表 int arcs[MAX][MAX];//邻接矩阵}graph,*原创 2023-03-05 21:02:36 · 124 阅读 · 0 评论 -
栈实现十进制转二进制
栈实现十进制转二进制原创 2022-12-08 22:47:36 · 192 阅读 · 0 评论 -
完数C语言
完数C语言原创 2022-12-08 22:39:26 · 403 阅读 · 0 评论 -
用两个栈模拟队列
用两个栈模拟队列原创 2022-12-08 22:37:07 · 67 阅读 · 0 评论 -
括号匹配(顺序栈)
括号匹配原创 2022-12-08 22:34:33 · 82 阅读 · 0 评论 -
二叉树的线索化(中序)
二叉树线索化原创 2022-12-08 22:31:25 · 327 阅读 · 0 评论 -
共享栈的实现
共享栈原创 2022-12-08 22:28:31 · 56 阅读 · 0 评论 -
栈实现中缀表达式求解
算术表达式有三种:中缀表达式、前缀表达式、后缀表达式,日常用的算术表达式为中缀表达式,其计算数值虽然一目了然,却不容易被计算机解释,其主要原因是在中缀表达式中,各运算符的优先级不同,不能简单地从表达式的左边直接计算到右边。所以要用两个栈实现,一个用来放操作数,一个用来放运算符。算法步骤:1.初始化并简历两个栈,一个用来放操作数OPND,一个用来放运算符OPTR,首先将操作数栈置为空栈,表达式起始符’#’为运算符栈底元素。2.输入一个后缀表达式(以#结束),依次读入表达式中每个字符,若是操作数进OPND原创 2021-01-31 20:41:47 · 974 阅读 · 2 评论 -
二分查找
#include<stdio.h>#include<stdlib.h>#define TRUE 1#define OK 1#define FALSE 0#define ERROR 0#define YES 1#define NO 0#define INFEASILE -1#define OVERFLOW -2typedef int Status;typedef int ElemType;#define LIST_INIT_SIZE 100#define LI原创 2021-01-31 20:08:36 · 57 阅读 · 0 评论 -
哈夫曼树的建立
#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef struct BNode{ int weigth; int parent, lchild, rchild;}HTNode, * HuffmanTree;typedef char**原创 2021-01-31 20:07:58 · 107 阅读 · 0 评论 -
约瑟夫问题
据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最原创 2021-01-31 20:05:49 · 58 阅读 · 0 评论 -
稀疏矩阵的压缩存储
稀疏矩阵:设在mn的矩阵中有t个非零元素。令ζ=t/(mn)当ζ<=0.05时称为稀疏矩阵。表示方法:三元组,十字链表三元组如图是一个三元组顺序表,三元组顺序表又称有序的双下标法三元组的优点:非零元在表中按行列有序存储,因此便于进依行顺序处理的矩阵运算。缺点:不能随机存取。若要按行号存取某一行中的非零元,需要从头开始进行查找。2.十字链表优点:能够灵活的插入和删除因运算产生的新的非零元素,实现矩阵的各种运算。在十字链表中,矩阵的每一个非零元素用一个节点表示,该节点除了(row,c原创 2021-01-31 19:58:23 · 1055 阅读 · 0 评论 -
后缀表达式求值
#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100#define YICHUHOU 10#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef int ElemType;typedef struct Stack{ int* top; int* bas原创 2021-01-31 20:02:29 · 70 阅读 · 0 评论 -
约瑟夫问题
#include<stdio.h>//约瑟夫问题#include<stdlib.h>typedef struct Node{ int data; Node* next;}*linklist, node;void Init(linklist* L, int n){ linklist s, r; (*L) = (linklist)malloc(sizeof(node)); if (!(*L)) exit(0); (*L)->next = (*L); (*原创 2020-07-05 10:42:49 · 99 阅读 · 0 评论 -
顺序栈
#include<stdio.h>//顺序栈#include<stdlib.h>#define MAXSIZE 100#define YICHUHOU 10#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2typedef int Status;typedef struct Stack{ int* top; int* base; int capacity;原创 2020-06-14 16:30:10 · 109 阅读 · 0 评论 -
二叉树的建立与基本操作
#include<stdio.h>#include<stdlib.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define MAXSIZE 100typedef int Status;typedef char ElemType;typedef struct Node{ char data; struct Node* lchild, * rchild;}*BiTree, BiNode;原创 2020-06-11 13:07:55 · 277 阅读 · 0 评论 -
图书管理系统顺序表实现
顺序表实现#include<stdio.h>#include<stdlib.h>#include<string.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define OVERFLOW -2#define MAXSIZE 100typedef int Status;typedef int Status;typedef struct book{ char no[20];原创 2020-06-11 13:07:16 · 2362 阅读 · 0 评论 -
十进制转八进制
#include<stdio.h>//进制转换#define STACK_INIT_SIZE 100#define STACKSIZE 10#define OK 1#define ERROR 0#define OVERFLOW -1#include<stdio.h>#include<stdlib.h>typedef int Status;typedef int SElemType;typedef struct{ SElemType* base;.原创 2020-06-11 11:10:22 · 207 阅读 · 0 评论 -
循环链表的合并
所以写一个函数更方便的找到尾指针node* findrear(node* L)//找到尾指针{ node* p = L->next; while (p->next != L) { p = p->next; } return p;//返回尾指针}两个循环链表如图所示,Ta,Tb分别为两个循环链表的尾指针(上面的为链表1,下面的为链表2)。1.先用指针p存储循环链表1的头结点,将链表1尾指针Ta指向链表2第一个结点即Ta->next=Tb->next-&g原创 2020-06-09 11:52:19 · 3830 阅读 · 1 评论 -
链式队列的基本操作
#include<stdio.h>//队列#include<stdlib.h>typedef int QElemType;typedef int Status;#define OK 1#define ERROR 0#define OVERFLOW -1#define TRUE 1#define FALSE -2typedef struct QNode{ QElemType data; struct QNode* next;}QNode, * QueuePtr原创 2020-06-08 14:12:14 · 188 阅读 · 0 评论