数据结构
JzjSunshine
这个作者很懒,什么都没留下…
展开
-
二叉树三种遍历(递归+迭代)Java
TreeNodepublic class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(){} TreeNode(int val,TreeNode left,TreeNode right){ this.val = val; this.left = left; this.right = right; }}递归public List&原创 2021-01-20 20:14:42 · 701 阅读 · 0 评论 -
C++ 由后序和中序遍历确定二叉树
/*解题思路1.根据后序序列最后一个元素建立根节点;2.在中序序列中找到该元素,确定根节点的左右子树序列;3.在后序序列中确定左右子树的后序序列;4.由左子树的中序和后序序列建立左子树;5.由右子树的中序和后序序列建立右子树;例子7 //元素个数2 3 1 5 7 6 4 //后序遍历序列1 2 3 4 5 6 7 //中序遍历序列取出后序序列最后一个元素4,将...原创 2019-07-21 21:46:43 · 1365 阅读 · 0 评论 -
迪杰斯特拉算法实例演示(Dijkstra)
一.题目(牛客)题目描述:旅行者的地图给出了高速公路沿线城市之间的距离以及每条高速公路的成本。现在你应该写一个程序来帮助旅行者决定他/她的起始城市和目的地之间的最短路径。如果这样的最短路径不是唯一的,那么您应该输出具有最小成本的路径,这保证是唯一的。每个输入文件包含一个测试用例。每个案例都以包含4个正整数N,M,S和D的行开头,其中N(<= 500)是城市的数量(因此城市的编号...原创 2019-01-30 17:01:18 · 2237 阅读 · 0 评论 -
C链表使用fread和fwrite写入文件和从文件读出
C链表使用fread和fwrite写入文件和从文件读出具体代码如下//结构类型typedef struct Lnode { ElemType data; struct Lnode *next;}Lnode, *Linknode;//写文件的方法status SaveList(Linknode &L){ FILE *fp; char filename[30]; ...原创 2018-11-28 14:01:46 · 5520 阅读 · 11 评论 -
2.3线性表的链式存储结构(链表生成:先入先/后出)
数据结构学习笔记(二)2.3.1单链表1.单链表的一般形式知道一个概念 头结点和首节点头结点其中没有数据,首节点作为数据域的一部分如图所示建立链表的代码struct node{ ElemType data; struct node *next;};//使用typedef定义指针类型typedef struct node{ El...原创 2018-10-24 23:40:45 · 442 阅读 · 0 评论 -
建立先进先出和先进后出链表
链表学习笔记(二)一.先入先出生成单链表1.生成新节点 p=malloc(链表大小)给新节点赋值 p->data ,p->next =NULL;2.添加到表尾 tail->next = p;3.设置新表尾 tail = p;类C语言描述struct node...原创 2018-09-29 14:41:38 · 3472 阅读 · 0 评论 -
求整数序列的子序列和的最大值 连续数组最大和
一.常规思路int sum1(int a[], int n){ int i, j; int maxSum = 0,curSum; for (i = 0; i < n; i++) { curSum = 0;//curSum表示从i开始的某子序列的和 for (j = i; j < n; j++) { //累加从区间[i,j]内的整数和到cunSum中 ...原创 2018-10-13 19:25:21 · 1743 阅读 · 0 评论 -
二叉树遍历(先序遍历,中序遍历,后序遍历)
数据结构学习笔记一.先序遍历先序遍历二叉树递归定义if(二叉树为空)遍历结束;else访问根节点,先序遍历根的左子树,先序遍历根的右子树基于二叉链表------typedef struct BiNode *BiTree; //节点指针类型status PreOrderTraverse(BiNode T,status(*visit)(TElemType &...原创 2018-09-25 20:57:40 · 255 阅读 · 0 评论 -
动态规划入门
一.01背包搜索问题描述:有n个重量和价值分别为 wi,vi 的物品。从这些物品中挑选出总重量不超过MaxValue的物品,求所有挑选方案中价值总和的最大值。限制条件:1 <= n <= 1001 <= wi, vi <= 1001 <= MaxValue <= 10000 输入:42 31 ...转载 2018-09-13 17:06:53 · 135 阅读 · 0 评论 -
C语言 二维数组(指针)动态分配和释放
C 二维数组(指针)动态分配和释放(1)已知二维char (*a)[N]; //指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d\n", sizeof(a)); //4,指针printf("%d\n", sizeof(a[0]));//N,一维数组free(a);(2)已知第...转载 2018-09-10 21:07:00 · 3778 阅读 · 0 评论 -
线性表基本操作——删除,插入等
第二章线性表基本操作(类C语言描述) 若一个元素占p个字节,则线性表第i个元素ai的存储位置,LOC(ai) = LOC(a1) + (i-1)*p;线性表动态分配内存#define LIST_INIT_SIZE 100 //线性表初始内存分配量#define LISTINCREMENT 10 //线性表存储分配量typedef struct{ ...原创 2018-09-08 12:21:50 · 2105 阅读 · 0 评论