Time of Update: 2017-02-27
棧(stack)是限定在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),棧又稱為後進先出(Last In First Out)的線性表,簡稱LIFO結構。 樣本程式:(改編自《大話資料結構》)#include <iostream>using namespace std; #define MAXSIZE 20 typedef int ElemType;typedef struct{
Time of Update: 2017-02-27
當單鏈表限定只能在頭部進行插入和刪除操作的時候,即為鏈棧,一般我們會將單鏈表的頭指標和棧的棧頂指標top合二 為一,通常對鏈棧來說,是不需要前端節點的,因為我們維護了棧頂指標。對於鏈棧來說,基本不存在棧滿的情況,除非記憶體 已經沒有可以使用的空間,對於空棧來說,鏈表原定義是頭指標指向空,那麼鏈棧的空其實就是top = = NULL的時候。 範例程式碼:(改編自《大話資料結構》)#include <iostream>using namespace std;
Time of Update: 2017-02-27
線性表的資料對象集合為 {a1,a2,....an},每個元素的類型均為Datatype。其中,除第一個元素a1外,每一個元素有且 只有一個直接前驅元素,除了最後一個元素an外,每一個元素有且只有一個直接後繼元素。資料元素之間的關係是一對一的 關係。線性表的順序儲存結構的優缺點:優點:無須為表示表中元素之間的邏輯關係而增加額外的儲存空間;可以快速地存取表中任一位置的元素O(1)缺
Time of Update: 2017-02-27
為了表示每個資料元素ai與其直接後繼元素ai+1之間的邏輯關係,對資料ai,除了儲存其自身的資訊之外,還需儲存一 個指示其直接後繼的資訊(即直接後繼的儲存位置)。這兩部分資訊組成資料元素ai的儲存映像,稱為結點(Node)。N個 結點鏈結成一個鏈表,即為線性表(a1,a2,...,an)的鏈式儲存結構,因為此鏈表的每個節點中只包含一個指標域,所以叫 做單鏈表。我們把鏈表中的第一個結點的儲存位置叫做頭指標,,為了更方便地對鏈表進行操作,如刪除第一個結
Time of Update: 2017-02-27
我們知道滿二叉樹只是一種特殊的二叉樹,大部分二叉樹的結點都是不完全存在左右孩子的,即很多指標域沒有被充分 地利用。另一方面我們在對一棵二叉樹做某種次序遍曆的時候,得到一串字元序列,遍曆過後,我們可以知道結點之間的前 驅後繼關係,也就是說,我們可以很清楚地知道任意一個結點,它的前驅和後繼是哪一個。可是這是建立在已經遍曆過的基 礎之上的。在二叉鏈表上,我們只能知道每個結點指向其左右孩子結點的地址,而不知道某個結點的前驅是誰,後繼是誰。
Time of Update: 2017-02-27
一、圖(Graph)是由頂點的有窮非空集合和頂點之間邊的集合組成,通常表示為:G(V,E),其中,G表示一個圖,V 是圖G中頂點的集合,E是圖G中邊的集合。在圖中的資料元素,我們稱之為頂點(Vertex),頂點集合有窮非空。在圖中, 任意兩個頂點之間都可能有關係,頂點之間的邏輯關係用邊來表示,邊集可以是空的。二、圖按照有無方向分為無 向圖和有向圖。無向圖由頂點和邊組成,有向圖由頂點和弧構成。弧有弧尾和弧頭之分,帶箭頭一端為弧頭。三、
Time of Update: 2017-02-27
圖的鄰接矩陣(Adjacency Matrix)儲存方式是用兩個數組來表示圖。一個一維的數組儲存圖中頂點資訊,一個二維數組 (稱為鄰接矩陣)儲存圖中的邊或弧的資訊。設圖G有n個頂點,則鄰接矩陣是一個n*n的方陣,定義為:我 們來看一個執行個體,圖7-4-2的左圖就是一個無向圖。我們再來看一個有向圖範例,如圖7-4-3所示 的左圖。在圖的術語中,我們提到了網的概念,也就是每條邊上都帶有權的圖叫做網。那些這些權值就需要儲存下來。設圖G是網圖,有n個頂點,則鄰接矩陣是一個n*n的方陣,定義為:
Time of Update: 2017-02-27
對於圖來說,鄰接矩陣是不錯的一種圖儲存結構,但是我們也發現,對於邊數相對頂點較少的圖,這種結構是存在對存 儲空間的極大浪費的。因此我們考慮另外一種儲存結構方式:鄰接表(Adjacency List),即數組與鏈表相結合的儲存方法 。鄰接表的處理方法是這樣的。1、圖中頂點用一個一維數組儲存,另外,對於頂點數組中,每個資料元素 還需要儲存指向第一個鄰接點的指標,以便於尋找該頂點的邊資訊。2、圖中每個頂點vi的所有鄰接點構成一個線性
Time of Update: 2017-02-27
一、樹(Tree)是n(n>=0)個結點的有限集。n=0時稱為空白樹。在任意一棵非空樹中:(1)有且僅有一個特定的稱為 根(root)的結點。(2)當n>1時,其餘結點可分為m(m>0)個互不相交的有限集T1,T2,....,Tm, 其中每一 個集合本身又是一棵樹,並且稱為根的子樹(SubTree),如圖1所示:圖1樹的定義之中還用到了樹的概念,即 遞迴定義。如圖2中的子樹T1和T2就是根結點A的子樹。當然D,G,H,I 組成的的樹又是B結點的子樹,E,J 組成的樹是C結點的 子樹。圖2
Time of Update: 2017-02-27
數組有兩個端點,兩個棧有兩個棧底,讓一個棧的棧底為數組的始端,即下標為0處,另一個棧為棧的末端,即下標為數 組長度n-1處。這樣,如果兩個棧增加元素,就是兩端點向中間延伸。當top1 + 1 == top2 的時候為棧滿。範例程式碼:(改編自《大話資料結構》)#include <iostream>using namespace std; #define MAXSIZE 20 typedef int ElemType;typedef struct{ ElemType
Time of Update: 2017-02-27
什麼是進程?當一個程式開始運行時,它就是一個進程,進程包括運行中的程式和程式所使用到的記憶體和系統資源。而一個進程又是由多個線程所組成的。什麼是線程?線程是程式中的一個執行流,每個線程都有自己的專有寄存器(棧指標、程式計數器等),但代碼區是共用的,即不同的線程可以執行同樣的函數。什麼是多線程?多線程是指程式中包含多個執行流,即在一個程式中可以同時運行多個不同的線程來執行不同的任務,也就是說允許單個程式建立多個並存執行的線程來完成各自的任務。多線程的好處:可以提高CPU的利用率。在多線程程式中,一
Time of Update: 2017-02-27
為了讓大家更深入的瞭解和使用C#,我們將開始這一系列的主題為“C#發現之旅 ”的技術講座。考慮到各位大多是進行WEB資料庫開發的,而所謂發現就是發現我們所 不熟悉的領域,因此本系列講座內容將是C#在WEB資料庫開發以外的應用。目前規劃的主要內 容是圖形開發和XML開發,並計劃編排了多個課程。在未來的C#發現之旅中,我們按照由淺入 深,循序漸進的步驟,一起探索和發現C#的其他未知的領域,更深入的理解和掌握使用C#進
Time of Update: 2017-02-27
在過去的二十年裡,C和C++已經成為在商業軟體的開發領域中使用最廣泛的語言。它們為程式員提供了十分靈活的操作,不過同時也犧牲了一定的效率。與諸如Microsoft Visual
Time of Update: 2017-02-27
為了讓大家更深入的瞭解和使用C#,我們將開始這一系列的主題為“C#發現之旅 ”的技術講座。考慮到各位大多是進行WEB資料庫開發的,而所謂發現就是發現我們所 不熟悉的領域,因此本系列講座內容將是C#在WEB資料庫開發以外的應用。目前規劃的主要內 容是圖形開發和XML開發,並計劃編排了多個課程。在未來的C#發現之旅中,我們按照由淺入 深,循序漸進的步驟,一起探索和發現C#的其他未知的領域,更深入的理解和掌握使用C#進
Time of Update: 2017-02-27
在C++中,bool類型的值可轉換為int類型的值,false等效於零值,而true等效於非零值。但是在C#語言中,不存在bool類型與其他類型之間的相互轉換。例如,下列if語句在C#中是非法的,而在C++中則是合法的:int x = 123;if (x) // 注意:在C#中此語句是錯誤的{ printf("x is 非零值.");}若要測試int類型的變數,必須將該變數與一個值(例如零)進行顯式比較,如下所示:int x = 123;if (x != 0) //
Time of Update: 2017-02-27
為了讓大家更深入的瞭解和使用C#,我們將開始這一系列的主題為“C#發現之旅 ”的技術講座。考慮到各位大多是進行WEB資料庫開發的,而所謂發現就是發現我們所 不熟悉的領域,因此本系列講座內容將是C#在WEB資料庫開發以外的應用。目前規劃的主要內 容是圖形開發和XML開發,並計劃編排了多個課程。在未來的C#發現之旅中,我們按照由淺入 深,循序漸進的步驟,一起探索和發現C#的其他未知的領域,更深入的理解和掌握使用C#進
Time of Update: 2017-02-27
using System;using System.Windows.Forms;using System.Runtime.InteropServices;namespace HotelManage{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } void hook_onMouseChange(object sender, EventArgs e)
Time of Update: 2017-02-27
在本示範程式中,我們只是用程式目錄下的一個Access2000資料庫作為例子,因此也只調 用了LoadFromAccesss2000這個函數,其他的分析SQLSERVER和ORACLE的函數沒用到。在未來 當這個代碼產生器經過改善而投入實際應用時,它就能分析SQLSERVER和ORACLE等企業級資料 庫了。在首頁面xslcreatecode.aspx中定義了一個GetXMLString函數,它能將一個對象
Time of Update: 2017-02-27
Timer組件是也是一個WinForm組件了,和其他的WinForm組件的最大區別是:Timer組件是不可見的,而其他大部分的組件都是都是可見的,可以設計的。Timer組件也被封裝在名稱空間System.Windows.Forms中,其主要作用是當Timer組件啟動後,每隔一個固定時間段,觸發相同的事件。Timer組件在程式設計中是一個比較常用的組件,雖然屬性、事件都很少,但在有些地方使用它會產生意想不到的效果。本文介紹的程式,是用Visual
Time of Update: 2017-02-27
在Windows系統一般都安裝了至少三種IME,在輸入資料時常常會切換IME,雖然Windows系統提供了切換快捷健,但對輸入工作還是帶來了不少麻煩。如果在應用程式中為使用者提供智能IME自動切換,那麼這樣的應用程式就顯得更加專業、更加具有競爭力。不知你可用過Access,在表資料輸入時Access自動切換IME,很酷吧,現在你也可以實現這一切。如果也想你的程式也酷一下的話,請繼續...為了控制IME,.NET類庫在System.Windows.Forms.InputLanguage類中提供了支