原创 順序表循環左右移動n個單位

順序表循環左右移動n個單位 思想:如下圖,比如需要循環右移兩個單位,先整體倒置,再局部倒置即可。 void Reverse(SqList &L,int low,int high) //倒置函數 整個表倒置low = 1 hig

原创 C++已知先序遍歷序列中序遍歷序列建立二叉樹;已知後序遍歷序列中序遍歷序列建立二叉樹

如題,已知先序中序/後序中序建立一棵二叉樹。         我們手工建樹的時候,比如一個例子:先序序列:ADECFG,中序序列:DBEAFCG。首先我們都會從先序序列中找到第一個元素A,該元素也就是這個樹的根。然後再在中序序列中找到一樣

原创 C++數據結構鄰接矩陣基本操作集(自編)

鄰接矩陣基本操作 建立鄰接矩陣 CreateMGraph(MGraph &G, VertexType v[],EdgeType e[][MAXSIZE],int n) 返回頂點下標 getVertexidx(MGraph G,

原创 順序表相關基本操作(從文件中讀取數據)

順序表的基本操作 初始化表 建表 增加元素 刪除元素 遍歷 唯一化順序表 頭文件: #ifndef _SQLIST_H_ #define _SQLIST_H_ #include <iostream> #include <fs

原创 改造一個雙向循環鏈表,使右鏈域保持原來的順序,而左鏈域從小到大順序排列。

   // 這道題的算法是我自己編寫而來的,我也是一名學生,如果有什麼更好的方法,我們可以相互交流。      在我的算法中,我使用了一個宏定義MaxNum 表示最大的數,實現了對左鏈域從小到大排列。實現從大到小排列只需要把MaxNum

原创 C++數據結構鏈隊出隊入隊

鏈隊相關操作 初始化隊列 入隊 出隊 #include "stdafx.h" #include <iostream> using namespace std; #define OK 1 #define ERROR 0 #de

原创 改造一個雙向循環鏈表,使右鏈域保持原來的順序,而左鏈域從小到大順序排列。

本題在之前發佈過,但發現方法略有複雜。本次將更新一下最簡單的思想方法 。點擊查看原題出處 思想: 改進:不需要對每個結點的左鏈域進行置空初始化,因爲最後還是會重新賦值。只需要對頭結點 L 初始化: L->prior = L

原创 C++二叉樹計算帶權路徑長度(WPL)的算法

二叉樹計算帶權路徑長度(WPL)的算法 更多內容請訪問點擊我的主頁 題目 : 二叉樹的帶權路徑長度是二叉樹中所有葉子結點的帶權路徑長度之和。給定二叉鏈表的存儲的結點結構爲 left weight right

原创 最小生成樹算法——kruskal

如圖,輸出最小生成樹的生成過程 算法思想: 每個邊的權值進行從小到大排序 然後從小到大添加到最小生成樹中,若添加一個邊後構成環路,則此邊不能添加。直到每個頂點都加入到最小生成樹中。 需要一個結構體來存儲 每個邊的權值與始末頂點

原创 判斷是否爲完全二叉樹

完全二叉樹 空樹是完全二叉樹 對於深度爲K的,有n個結點的二叉樹,當且僅當其每一個結點都與深度爲K的滿二叉樹中編號從1至n的結點一一對應時稱之爲完全二叉樹。 算法思想 判斷樹是否是空樹,若爲空樹則爲完全二叉樹 若樹爲非空完全

原创 循環隊列入隊出隊判隊空隊滿

循環隊列: 結構: typedef struct { ElemType *data; //數據域 int front; //隊頭 int rear; //隊尾 下標代替指針 }SqQueue; 初始化隊列 初始

原创 單鏈表相關的基本操作(從文件中讀入)

單鏈表相關的基本操作 初始化單鏈表 頭插法建表 尾插法建表 插入元素 刪除元素 判空表 單鏈表倒置 頭文件: #ifndef _LINKLIST_H_ #define _LINKLIST_H_ #include <iostr