
算法与数据结构
CosmosSeed
Encoding the world
展开
-
数据结构与算法之二叉树的遍历方式
在二叉树的一些应用中,常常要求在数中查找具有某种特征的结点,或者对树中全部结点逐一进行某种处理。这就提出了一个遍历二叉树(traversing binary tree)的问题。其中限定先左后右的情况下,只有三种情况,分别称之为先序遍历,中序遍历,后序遍历。先序遍历二叉树的定义为:若二叉树为空,则空操作;否则(1)访问根结点;(2)先序遍历左子树;(3)后序遍历右子树; ...原创 2017-11-14 17:24:26 · 322 阅读 · 0 评论 -
递减双向循环队列插入元素,并保持递减性
设有一个带头结点的、按元素值递减有序排列的双向循环链表,编写算法,插入一个元素并保持其有序性。双向链表结点的类型定义如下:typedef struct DuLNode{ int data; struct DuLNode *prior;//指向前驱的指针 struct DuLNode *next;//指向后继的指针}DuLNode,*DuLinkList;这是一道考研题中的算法题,今...原创 2018-11-05 23:04:41 · 481 阅读 · 0 评论 -
链队列的存储实现(入队,出队,清队,销毁队,遍历,判断是否为空等)
链队列的存储实现(入队,出队,清队,销毁队,遍历,判断是否为空等)具体实现代码如下:/*链队列的入队,出队,清队,判断队空等***/#include <iostream>#include <cstdlib>#include <cstdio>using namespace std;#define MAXSIZE 100#define O...原创 2018-11-13 00:08:15 · 4563 阅读 · 1 评论 -
利用栈实现十进制与任意进制之间的转换
最近看数据结构有个十进制与八进制的转换,就整理一下,利用栈实现十进制与任意进制之间的转换。#include &lt;iostream&gt;#include &lt;stack&gt;using namespace std;int main(){ stack &lt;int&gt;v; int n,d; cout &lt;&原创 2018-11-02 09:02:05 · 9179 阅读 · 1 评论 -
循环队列的顺序存储实现(入队,出队,清队,销毁队,遍历等)
循环队列的顺序存储实现,包括入队,出队,清队,销毁队,遍历队列等队列(queue)是一种先进先出(first in fist out,缩写为FIFO)的线性表,它只允许在表的一端进行插入,而在另一端进行删除元素。允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。具体的代码实现如下#include <iostream>#include <cstdli...原创 2018-11-03 23:34:54 · 9172 阅读 · 0 评论 -
生小牛问题
生小牛问题题目描述有一头牛,从第四年开始每一年生一头小牛,到第九年死亡,试问20年之后有多少头牛?#include<iostream>#include<malloc.h>#include<vector>using namespace std;int main(){ int S; int position; int N; ...原创 2018-10-27 20:15:36 · 997 阅读 · 0 评论 -
数字三角形问题
数字三角形问题该问题考查的就是动态规划问题,此类问题一开始想明白有点麻烦,先记下来慢慢领悟一下。问题描述:有一个由非负整数组成的三角形,第一行只有一个数,除了最下行之外每个数的左下方和右下方各有一个数。从第一行的数开始,每次可以往左下或右下走一格,直到走到最下行,把沿途经过的数全部加起来。如何走才能使得这个和尽量大?如下图: 7 3 8 ...原创 2018-10-27 11:00:53 · 545 阅读 · 0 评论 -
多处最优服务次序问题
用C语言的方法对txt文件中的数据进行读取和存取这篇文章是接上一篇文章的,只不过这是多处最优服务次序问题,思路还是一样的,只不过在每次分组之后的第一个都不需要多余的等待时间,因为是同时开始的。具体题目要求如下:设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti([1,n]),共有s处可以提供此项服务。应该如何安排n个顾客的服务次序,才能使平均等待时间达到最小?平均等待时间是n个顾客等待...原创 2018-10-25 22:38:48 · 1174 阅读 · 0 评论 -
最优服务次序问题一(贪心算法)
最优服务次序问题(贪心算法)最近老是布置的作业,在家养病,就把以前写好的整理一下发出来,一起交流学习。贪心算法无非是“此时此刻的最优解问题”,以最优服务次序为例。最优服务次序问题,个人理解,就是理清里面的思路,一般都是按照从小到大的顺序排列,然后在进行依次算出等待时间,如果不止一个服务地点则进行循环算出每一个窗口的等待时间即可(两个及两个服务以上的地点见下一篇blog)。具体算法如下:以下算...原创 2018-10-25 22:14:53 · 8636 阅读 · 0 评论 -
01背包问题(动态规划)
背包问题最近刚学了01背包问题,但是听老师讲再加上以前自己看书看的,发现有很多地方很容易搞混,原理就是划分找动态转移方程,但是写程序时会遇到困难,趁着今天有空,就特意整理一下01背包问题。动态规划的基本思想:动态规划算法通常用于求解具有某种最优性质的问题。即我们平常所说的最优子结构性质。动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解...原创 2018-10-28 11:55:07 · 5505 阅读 · 0 评论 -
带头结点的单链表,采用直接插入排序的方法,按照非递减排序
直接插入排序的思想,就是先默认第一个元素是排序好的,在顺序表中,从后面往前依次进行比较,从而进行排序。但是在单链表中,从后面遍历的话,找结点的前驱非常困难。故需要设一指针,从头进行遍历。代码如下:void Sort(LinkNode *&L){ LinkNode *p,*pre,*q; p=L->next->next; ///p指向L的第二个...原创 2018-12-04 23:10:18 · 5768 阅读 · 1 评论