原创 【查找】基於線性表的查找法

查找的主要方法 基於線性表的查找法 一、順序查找法 順序查找法的特點是,用所給關鍵字與線性表中各元素的關鍵字逐個比較,直到成功或失敗。存儲結構通常爲順序結構,也可爲鏈式結構。 順序結構數據類型的定義: #define L

原创 【樹】二叉樹的基本概念與性質

二叉樹的定義與基本操作 1.定義:把滿足以下兩個條件的樹型結構叫做二叉樹(Binary Tree): (1) 每個結點的度都不大於 2; (2) 每個結點的孩子結點次序不能任意顛倒。 由此定義可看出,一個二叉樹中的每個結點只能

原创 【樹】樹、森林和二叉樹的關係

樹的存儲結構 1.雙親表示法 這種方法用一組連續的空間來存儲樹中的結點,在保存每個結點的同時附設一個指示器來指示其雙親結點在表中的位置,其結點的結構如下圖所示: 雙親表示法的形式說明如下: #define MAX 100

原创 【線性表】順序表及其基本運算和應用

順序存儲結構的c語言描述 #define MAXSIZE 100/*此處的宏定義常量表示線性表可能達到的最大長度*/ typedef struct{ ElemType elem[MAXSIZE];/*線性表佔用的數組空間*/

原创 【樹】遍歷算法應用

輸出二叉樹中的結點 【算法思想】 輸出二叉樹中的結點並無次序要求,因此可用三種遍歷算法中的任何一種完成,只需將訪問操作具體變爲輸出操作即可。下面給出採用先序遍歷實現的算法。 【算法描述】 void PreOrder(BiTree

原创 【線性表】應用—一元多項式的表示及相加

1. 一元多項式的表示 2. 一元多項式的存儲 一元多項式的操作可以利用線性表來處理。因此,一元多項式也有順序存儲和鏈式存儲兩種方法。 結點結構體定義如下 struct polynode{ int coef; i

原创 習題11-8 單鏈表結點刪除

本題要求實現兩個函數,分別將讀入的數據存儲爲單鏈表、將鏈表中所有存儲了某給定值的結點刪除。 鏈表結點定義如下: struct ListNode { int data; ListNode *next; };

原创 【線性表】循環/雙向/靜態鏈表

循環鏈表 定義:首尾相接的鏈表 結構:尾結點的指針域指向頭結點或表的首元結點 特點:表中所有結點都鏈接在一個環上 判斷循環鏈表空鏈表的條件:頭指針的指針域指向自己(head->next==head) 循環鏈表的合併算法 算

原创 【樹】二叉樹的遍歷及遞歸遍歷算法

二叉樹遍歷的定義 二叉樹的遍歷:按一定規律對二叉樹中的每個結點進行訪問且僅訪問一次。其中的訪問可指計算二叉樹中結點的數據信息,打印該結點的信息,也包括對結點進行任何其他操作。 爲什麼需要遍歷二叉樹? 二叉樹是非線性數據結構,通

原创 【樹】線索二叉樹的基本概念及遍歷

基本概念 我們知道,在有 n 個結點的二叉鏈表中共有 2n 個鏈域,但只有 n-1 個有用的非空鏈域,其餘 n+1 個鏈域是空的。可以利用剩下的 n+1 個空鏈域來存放遍歷過程中結點的前驅和後繼信息。 現作如下規定: 若結點

原创 【樹】哈夫曼樹及其構造

1.哈夫曼樹的基本概念 結點間的路徑和路徑長度 路徑是指從一個結點到另一個結點之間的分支序列。 路徑長度是指從一個結點到另一個結點所經過的分支數目。 結點的權和帶權路徑長度 在實際的應用中,給樹的每個結點賦予一個具有某種實際意

原创 【線性表】順序表與鏈表的綜合比較

<-----------------------------------西北大學mooc摘要-------------------------------------> 1.基於空間的考慮 順序表的存儲空間是靜態分配的,在程序執行

原创 【樹】由遍歷序列確定的二叉樹

例:已知一棵二叉樹的先序序列與中序序列分別爲: A B C D E F G H I B C A E D G H F I 試構造該二叉樹。 分析: 根據定義,二叉樹的先序遍歷是先訪問根結點,其次再按先序遍歷方式遍歷根結點的左子樹,

原创 【樹】樹的基本概念

樹的定義與基本術語 樹的基本概念 樹是 n(n≥0)個結點的有限集合 T。 當 n=0 時,稱爲空樹; 當 n>0 時,該集合滿足如下條件:①其中必有一個稱爲根(root)的特定結點,它沒有直接前驅,但有零個或多個直接後繼。②其

原创 【線性表】單鏈表及其基本運算和應用

單鏈表的c語言定義 typedef struct Node { ElemType data;/*數據域*/ struct Node *next;/*指針域*/ } Node,*Linklist;/*給node起兩個別名,這兩