线性结构
文章平均质量分 89
-dzy-
国子先生晨入太学,招诸生立馆下,诲之曰:“业精于勤,荒于嬉;行成于思,毁于随。”
展开
-
队列——解密QQ号
新学期开始了,小哈是小哼的新同桌(小哈是个小美女哦~),小哼向小哈询问QQ号,小哈当然不会直接告诉小哼啦,原因嘛你懂的。所以小哈给了小哼一串加密过的数字,同时小哈也告诉了小哼解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数再放到这串数的末尾,再将第5个数删除……直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一转载 2016-08-02 15:41:24 · 1329 阅读 · 0 评论 -
3-sum问题平方对数级别解法(algs4)
ThreeSum程序会统计一个文件中所有和为0的三整数元组的数量。ThreeSun用一个三重循环进行查找for(int i=0;i<n;i++) for(int j=i+1;j<n;j++) for(int k=j+1;k<n;k++) if(a[i]+a[j]+a[k])==0) cnt++;运行时间是关于数组大小的立方级别的改进后的算法思路:1.先将原创 2017-08-18 15:46:31 · 480 阅读 · 0 评论 -
1.3.10将算术表达式由中序表达式转为后序表达式(algs4)
前序表达式如何求值对于一个前序表达式的求值而言,首先要从右至左扫描表达式,从右边第一个字符开始判断,如果当前字符是数字则一直到数字串的末尾再记录下来,如果是运算符,则将右边离得最近的两个“数字串”作相应的运算,以此作为一个新的“数字串”并记录下来。一直扫描到表达式的最左端时,最后运算的值也就是表达式的值。例如,前序表达式“- 1 + 2 3“的求值,扫描到3时,记录下这个数字串,扫描到2时原创 2017-08-17 21:00:59 · 824 阅读 · 0 评论 -
算术表达式补全右括号(algs4)
栈的应用package _1_3linkedList;import java.util.Scanner;/*1.3.9从标准输入中得到一个缺少左括号的表达式并打印出补全括号之后的中序表达式*/public class _1_3_9CompleteBracket{ public static void main(String[] args) { String s=new原创 2017-08-16 10:44:30 · 559 阅读 · 0 评论 -
Dijkstra的双栈算术表达式(未省略括号)求值算法(algs4)
package method;import java.util.Scanner;import java.util.Stack;/* * Dijkstra的双栈算术表达式(未省略括号)求值算法 * 用两个栈(一个用于保存运算符,一个用于保存操作数) * 1.将操作数压入操作数栈; * 2.将运算符压入运算符栈; * 3.忽略左括号; * 4.在遇到右括号时,弹出一个运算符,弹原创 2017-08-09 08:39:53 · 440 阅读 · 0 评论 -
典型的数组处理代码(algs4)
1. 找出数组中最大的元素 package array1;/** 找出数组中最大的元素-数据类型的实现*/public class Max{ private double max; private double[] b; public Max(double[] a) //构造函数,数组是引用传递而非值传递所以进行复制性保护 { b=new double[a.len原创 2017-08-03 23:10:34 · 451 阅读 · 0 评论 -
算法1.3 先进先出队列(algs4)
算法1.3先进先出队列APIpublic class Queue implements Iterableprivate Node first 指向最早添加的节点的链接private Node last 指向最近添加的节点的链接private int Nprivate原创 2017-08-15 16:25:37 · 462 阅读 · 0 评论 -
算法1.2下压堆栈(链表表示)(algs4)
算法1.2下压堆栈(链表表示)APIpublic class Stack implements Iterableprivate Node first 栈顶(最近添加的元素)private int N 元素数量 public cl原创 2017-08-14 16:56:47 · 296 阅读 · 0 评论 -
算法1.1 下压(LIFO)栈(能动态调整数组大小的实现)
package linearStructure;import java.util.Iterator;/*算法1.1 下压(LIFO)栈(能动态调整数组大小的实现) * 泛型可迭代,能动态调整数组大小的实现 * 要使类迭代:1.继承Iterable接口;2.添加一个方法iterator()并返回一个迭代器Iterator*/public class ResizingArryStack原创 2017-08-11 11:20:12 · 680 阅读 · 0 评论 -
算法1.4背包(algs4)
算法1.4背包APIpublic class Bag implements Iterable private Node first 链表的首节点private int N private class Node原创 2017-08-15 16:40:32 · 383 阅读 · 0 评论 -
Union-find算法(algs4)
1. 动态连通性问题目标:编写一个程序过滤掉序列中无意义的整数对(两个整数均来自同一个等价类中)。问题描述:当程序从输入中读取了整数对p、q时,如果已知的所有整数对都不能说明p和q是相连的,那么则将这一对整数写入到输出中。如果已知的数据可以说明p和q是相连的,那么程序应该忽略p、q这对整数并继续处理输入中的下一对整数。应用:网络、变量名等价性、数学集合网络方面的术语:对象称为原创 2017-08-19 21:32:09 · 524 阅读 · 0 评论 -
归并排序(algs4)
将两个有序的数组归并成一个更大的有序数组。要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来。归并排序是算法中分治思想的典型应用归并排序所需的时间和NlgN成正比。辅助数组所需的额外空间和N的大小成正比。归并排序是一种渐进最优的基于比较排序的算法。 1. 原地归并将涉及的所有元素复制到一个辅助数组,再把归并的结果放回原数组。 private原创 2017-08-21 21:22:03 · 492 阅读 · 0 评论 -
用递归函数求出迷宫所有解
墙元素值为0,可通过路径为-1,通过路径为足迹。输入格式为X,Y,中间有逗号。依次试探东南西北四个方向#include using namespace std;struct PosType/*迷宫坐标位置类型*/{ int x;/*行值*/ int y;/*列值*/};#define MAXLENGTH 25/*设迷宫的最大行列为25*/typedef int原创 2016-10-24 23:05:43 · 1742 阅读 · 0 评论 -
用链表实现一元稀疏多项式的相加
一元多项式一定要包含系数项和指数项的描述,对一元多项式的基本运算,可应用两个有序链表合并的思想进行。转载 2016-10-18 16:17:08 · 2521 阅读 · 0 评论 -
链式队列定义以及应用
#include#include#include/*malloc()等*/#include/*INT_MAX等*/#include/*EOF(=^Z或F6),NULL*/#include/*atoi()*/#include/*eof()*/#include/*floor(),ceil(),abs()*/#include/*exit()*//*函数结果状态代码*/#define原创 2016-10-18 23:11:55 · 3005 阅读 · 0 评论 -
顺序栈的定义以及应用:十进制与八进制的转换、十进制与十六进制的转换
利用栈的顺序存储结构,设计一组输入数据(假定为一组整数),能够对顺序栈进行如下操作: 初始化一个空栈,分配一段连续的存储空间,且设定好栈顶和栈底; 完成一个元素的入栈操作,修改栈顶指针; 完成一个元素的出栈操作,修改栈顶指针; 读取栈顶指针所指向的元素的值;原创 2016-10-18 22:50:00 · 7779 阅读 · 0 评论 -
线性表的链式存储与基本操作
利用线性表的链式存储结构,设计一组输入数据(假定为一组整数),能够对单链表进行如下操作: 初始化一个带表头结点的空链表; 创建一个单链表是从无到有地建立起一个链表,即一个一个地输入各结点数据,并建立起前后相互链接的关系。又分为逆位序(插在表头)输入n个元素的值和正位序(插在表尾)输入n个元素的值; 插入结点可以根据给定位置进行插入(位置插入),也可以根据结点的值插入到已知的链表中原创 2016-10-15 18:56:17 · 6700 阅读 · 0 评论 -
线性表的顺序存储与基本操作
文件名的标识基本以每个实验的内容作为依据,如顺序表的存储结构定义文件为SeqListDef.h。这些程序文件主要包含了如下4类:(1) pubuse.h 是几乎所有实验中都涉及到的,包含了一些常量定义,系统函数原型声明和类型(Status)重定义,结果状态代码等。(2) 数据结构定义:以____Def.h为文件名;(3) 基本操作和算法:以____Algo.h为文件名;原创 2016-10-15 18:44:16 · 4268 阅读 · 0 评论 -
算法3.2 二分查找(基于有序数组)(algs4)
有序泛型符号表的APIpublic class BinarySearchST,Value>private Key[] keys 存储键private Value[] vals 存储值private int N原创 2017-08-27 11:10:42 · 667 阅读 · 0 评论 -
算法3.1 顺序查找(基于无序链表)(algs4)
符号表是一种存储键值对的数据结构,支持两种操作:插入(put),即将一组新的键值对存入表中;查找(get),即根据给定的键得到相应的值。 算法3.1 顺序查找(基于无序链表)APIpublic class Se原创 2017-08-26 19:54:49 · 1439 阅读 · 0 评论 -
快速排序(algs4)
package _2_Sorting;import java.util.Scanner;import edu.princeton.cs.algs4.StdRandom;/**算法2.5 快速排序 * 应用最广泛的排序算法 * 优点: * 1.原地排序(只需要一个很小的栈) * 2.将长度为N的数组排序所需的时间和NlgN成正比 * 缺点: * 非常脆弱 * */publi原创 2017-08-24 10:48:50 · 404 阅读 · 0 评论 -
初级排序算法(algs4)
1.规则 排序类算法模板APIpublic class Example public static void sort(Comparable[] a) (*原创 2017-08-21 11:22:26 · 572 阅读 · 0 评论