![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
数据结构学习
全全全呀
在读本科生,欢迎一起交流讨论学习
展开
-
栈的应用
仅写了栈的相关实现函数和进制转换、括号匹配功能,行编辑有点问题,之后再进行补充源代码:#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<time.h>#include<string.h>#include<iostream>using namespace std;#define TRUE 1#define FALSE 0#define OK原创 2020-07-04 15:14:55 · 222 阅读 · 0 评论 -
设计一个算法,计算 Huffman 树的带权路径长度。
设计一个算法,计算 Huffman 树的带权路径长度。#include<stdio.h>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef struct{ int data; int parent; int leftChild, rightChild;}node;node* tre原创 2020-06-03 13:42:53 · 1069 阅读 · 0 评论 -
一棵树采用双亲表示法存储,设计一个算法,计算树的深度
一棵树采用双亲表示法存储,设计一个算法,计算树的深度#include<stdio.h>#include<stdlib.h>#define MAX_SIZE 20typedef char ElemType;typedef struct Snode { ElemType data; int parent;}PNode;typedef struct //树结构{ PNode tnode[MAX_SIZE]; int n;原创 2020-05-31 18:46:48 · 2004 阅读 · 0 评论 -
设二叉树采用二叉链表存储,设计一个算法,利用二叉树的中序遍历,求中序 遍历序列的第 k 个结点。
设二叉树采用二叉链表存储,设计一个算法,利用二叉树的中序遍历,求中序遍历序列的第 k 个结点。#include<stdio.h>#define MAXSIZE 100typedef char TElemType;typedef struct BiTNode{ TElemType data; struct BiTNode* lchild,*rchild;}BiTNode,*BiTree;//中序遍历程序 void InOrderTraverse(BiTree T){ if(原创 2020-05-31 18:46:00 · 5046 阅读 · 0 评论 -
广义表 GL 采用头尾表示存储,设计一个算法,求 GL 的长度。
广义表 GL 采用头尾表示存储,设计一个算法,求 GL 的长度。源代码:#include <stdio.h>#include <stdlib.h>typedef struct GLNode{ int tag;//公共部分,用于区分原子节点和表结点 union{ char atom;//atom原子结点的值域 str...原创 2020-04-24 09:36:16 · 668 阅读 · 2 评论 -
设稀疏矩阵 M(m,n)存放于二维数组 A[m][n]中,设计一个算法,从 A 生成系 数矩阵的 M 的三元组表示。
设稀疏矩阵 M(m,n)存放于二维数组 A[m][n]中,设计一个算法,从 A 生成系数矩阵的 M 的三元组表示。源代码:#include<stdio.h>#include<stdlib.h>#define OK 1#define MAXSIZE 12500typedef int Status;typedef int ElemType;Status Cre...原创 2020-04-24 09:35:09 · 1066 阅读 · 0 评论 -
设串 T 采用堆式存储,设计一个算法,用统计串的形式给出串 T 中字符连续 出现的次数,例如‘aaabbaddddffc’的统计串为‘a3_b2_a1_d4_f2_c1’。
设串 T 采用堆式存储,设计一个算法,用统计串的形式给出串 T 中字符连续出现的次数,例如‘aaabbaddddffc’的统计串为‘a3_b2_a1_d4_f2_c1’。#include<iostream>#include<stdio.h>#include<stdlib.h>using namespace std;#define Ok 1#def...原创 2020-04-20 15:44:02 · 694 阅读 · 2 评论 -
铁路车厢调度问题。图 1 是一个铁道调车场的示意图,两侧铁道均为单向行驶 道,中间有一段用于调度的“栈道”,调车场的入口处有 n 节硬座和软座车厢(分 别用 H 和 S 表示),设计一个算法,把所有的
铁路车厢调度问题。图 1 是一个铁道调车场的示意图,两侧铁道均为单向行驶道,中间有一段用于调度的“栈道”,调车场的入口处有 n 节硬座和软座车厢(分别用 H 和 S 表示),设计一个算法,把所有的软座车厢调度到硬座车厢前面来,要求输出对这 n 节车厢进行调度的(车厢编号)结果序列。Train=‘HSSSHSHHSSHSHSHSSHHH’#include<stdio.h>#...原创 2020-04-12 21:23:39 · 2207 阅读 · 0 评论 -
已知一维数组 L[n]中存放实数序列 l1, l2…, ln,设计一个递归算法,求其中的最 大值及其所在数组元素的下标
已知一维数组 L[n]中存放实数序列 l1, l2…, ln,设计一个递归算法,求其中的最大值及其所在数组元素的下标:程序思路:题目要求为利用递归函数找到一维数组的最大值及其下表。递归函数就是不 断地调用自身,所以只需要定义中间变量 temp=FindMax(L,n-1),让 temp 和 L[n-1]进行比 较谁打返回上一级,这样就可以获得数组中的最大值,然后遍历一维数组,一维数组中等于 最...原创 2020-04-12 21:22:25 · 657 阅读 · 0 评论 -
设计一个算法,借助栈实现单链表链接顺序的逆转
设计一个算法,借助栈实现单链表链接顺序的逆转:程序思路:题目要求为借助栈将单链表中的数据逆置输出,栈的特点就是先进后出,只 需要将单链表中的数据依次存储在栈中,然后将栈中的元素依次取出即可。关键代码: while§//将链表结点数据入栈 { Push(S,p); p=p->next; }while(!Empty(S))//将栈中的数据取出并输出 { x=Pup(S,&x); pri...原创 2020-04-12 21:21:22 · 7683 阅读 · 2 评论 -
【顺序表算法】设顺序表 L,元素的个数是 n。将 L 中存放的元素循环左移 p 个位置,即将 L 中的数据序列{ l0,l1, l2…, l n-1}变换为{ lp,lp+1,… ln-1,l0, l
【顺序表算法】设顺序表 L,元素的个数是 n。将 L 中存放的元素循环左移 p个位置,即将 L 中的数据序列{ l0,l1, l2…, l n-1}变换为{ lp,lp+1,… ln-1,l0, l1…, l p-1}。#include<stdio.h>#include<stdlib.h>const int ListSize = 100;typedef int E...原创 2020-04-02 22:32:52 · 1757 阅读 · 0 评论 -
【单链表算法】设带头结点的非空单链表 L,设计一个算法删除 L 中奇数序号 的结点,即删除 L 中第 1、3、5…结点。
【单链表算法】设带头结点的非空单链表 L,设计一个算法删除 L 中奇数序号的结点,即删除 L 中第 1、3、5…结点。#include<stdio.h>#include<malloc.h>typedef struct node { int data; struct node* next;}node; // 定义结构体 node* creat(int l...原创 2020-04-02 22:31:02 · 4841 阅读 · 3 评论 -
【一元多项式算法】设一个一元多项式采用带头结点的单链表存储,所有结点 按照升幂方式链接。设计一个算法,求两个多项式 A 和 B 的乘积,结果多项式 C 存放在新辟的空间中。
【一元多项式算法】设一个一元多项式采用带头结点的单链表存储,所有结点按照升幂方式链接。设计一个算法,求两个多项式 A 和 B 的乘积,结果多项式 C存放在新辟的空间中。#include<stdio.h>#include<stdlib.h>typedef struct node { int coef; int expn; struct node* next;...原创 2020-03-29 11:29:10 · 2848 阅读 · 1 评论 -
【循环双链表算法】设一个带头结点的循环双链表 DL,结点的值可能重复。设 计一个算法输出 DL 所有元素的值,参数 d=0 时按照前驱方向输出,d=1 时按照 后继方向输出
【循环双链表算法】设一个带头结点的循环双链表 DL,结点的值可能重复。设计一个算法输出 DL 所有元素的值,参数 d=0 时按照前驱方向输出,d=1 时按照后继方向输出。#include<stdio.h>#include<malloc.h>typedef struct node{ int data; struct node* prior; struct n...原创 2020-03-23 09:10:08 · 830 阅读 · 0 评论 -
【循环单链表算法】(C语言实现)设一个带头结点的非空循环单链表 L,结点的值可能重复。 设计一个算法在 L 中第一个最大值结点(最大值结点可能有多个)之前那插入一 个值为想的结点
【循环单链表算法】设一个带头结点的非空循环单链表 L,结点的值可能重复。设计一个算法在 L 中第一个最大值结点(最大值结点可能有多个)之前那插入一个值为想的结点源程序:#include<stdio.h>#include<malloc.h>typedef struct node{ int data; struct node* next;}node;no...原创 2020-03-22 12:01:35 · 10604 阅读 · 5 评论 -
顺序表算法:将2个有序顺序表合成一个有序的顺序表
【顺序表算法】设顺序表 A,元素的个数是 n,没有重复。如果 A 中前 k 个元素有序,后 n-k 个元素有序,设计一个算法使得整个顺序表有序,要求算法的空间复杂度为 O(1)。solution:由于题目要求空间复杂度为O(1),所以不能另外的构建线性表,只能定义中间变量来防止数据的流失。大概思路就是通过循环将后面的n-k个元素分别和前面的k个元素相比较,用程序中的while循环将前k个元...原创 2020-03-14 21:52:05 · 4745 阅读 · 2 评论