原创 C++ 中string.erase() 的用法

1、string.erase(pos,n)          //刪除從pos開始的n個字符    string.erase(0,1);   刪除第一個字符 #include <string> #include <iostream>

原创 淺談數據結構-平衡二叉樹

平衡二叉樹(Balanced Binary Tree)是二叉查找樹的一個進化體,也是第一個引入平衡概念的二叉樹。1962年,G.M. Adelson-Velsky 和 E.M. Landis發明了這棵樹,所以它又叫AVL樹。平衡二叉樹要求

原创 樹、森林與二叉樹相互轉化原理圖

1、樹轉換爲二叉樹 由於二叉樹是有序的,爲了避免混淆,對於無序樹,我們約定樹中的每個結點的孩子結點按從左到右的順序進行編號。 將樹轉換成二叉樹的步驟是: (1)加線。就是在所有兄弟結點之間加一條連線; (2)抹線。就是對樹中的每個結點,只

原创 人活着系列之芳姐和芳姐的豬(Floyd)

Problem Description 百年來,人活着是爲了什麼這個問題一直縈繞在人的腦海裏,也一直困擾着人的思想。人活着就是活着了,爲活着本身而活着,而不是爲活着之外的任何事物而活着的。正因爲活着,所以活着。對,是有點莫明其妙,但也是一

原创 最短路徑(Floyd)——數據結構實驗之圖論七:驢友計劃

Floyd:   求多源、無負權邊的最短路。用矩陣記錄圖。時效性較差,時間複雜度O(V^3)。        Floyd-Warshall算法(Floyd-Warshall algorithm)是解決任意兩點間的最短路徑的一種算法,可以正

原创 數據結構實驗之排序八:快速排序(QuickSort)

Problem Description 給定N(N≤10^5)個整數,要求用快速排序對數據進行升序排列,注意不得使用STL。   Input  連續輸入多組數據,每組輸入數據第一行給出正整數N(≤10^5),隨後給出N個整數,數字間以空格

原创 冒泡排序算法及其優化(BubbleSort)

冒泡排序算是排序算法裏面的一種較爲簡單的算法,也是我接觸的第一種排序算法,有升序與降序之分,如果面試的時候面試官問道這個題目,一定要問清楚是升序還是降序,這樣會給你加分。 下面,我以升序來講一下它的運作。   1、比較相鄰的元素。如果第

原创 排序算法系列:插入排序算法(InsertionSort)

插入排序原理很簡單,講一組數據分成兩組,我分別將其稱爲有序組與待插入組。每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插入一個元素,有序組增加,待插入組減少。直到待插入組元素個

原创 最短路徑(Dijkstra)

迪傑斯特拉(Dijkstra)算法是典型最短路徑算法,用於計算一個節點到其他節點的最短路徑。  它的主要特點是以起始點爲中心向外層層擴展(廣度優先搜索思想),直到擴展到終點爲止 基本思想 通過Dijkstra計算圖G中的最短路徑時,需要

原创 哈夫曼樹與哈夫曼編碼(前綴編碼)理解

一、哈夫曼樹定義及用途哈夫曼樹又稱最優二叉樹,是帶權路徑長度(WPL)最短的樹,可以構造最優編碼,用於數據傳輸,數據壓縮等方向下面是二叉樹和哈夫曼樹二、概念路徑:樹中一個結點到另一個結點之間的分支序列構成兩個結點間的路徑路徑長度:路徑上的

原创 數據結構實驗之棧與隊列十:走迷宮(DFS)

Problem Description 一個由n * m 個格子組成的迷宮,起點是(1, 1), 終點是(n, m),每次可以向上下左右四個方向任意走一步,並且有些格子是不能走動,求從起點到終點經過每個格子至多一次的走法數。 Input

原创 總結C++中的幾種結構體初始化的方法

文章地址:http://www.cnblogs.com/vongang/archive/2011/07/30/2122076.html     結構體能自由組裝數據,是一種很常見的數據打包方法。當我們定義一個結構體後,沒有初始化就使用,就

原创 數據結構實驗之二叉樹四:(先序中序)還原二叉樹

Problem Description給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。Input輸入數據有多組,每組數據第一行輸入1個正整數N(1 <= N <= 50)爲樹中結點總數,隨後2行先後給出先序和中序遍歷序

原创 java中map 9種常規用法

0、將Map轉換爲List類型 在java中Map接口提供了三種集合獲取方式:Key set,,value set, and key-value set.。它們都可以通過構造方法或者addAll()方法來轉換爲List類型。下面代碼就