資料結構 零基礎建棧

2021-10-07 05:17:26 字數 3757 閱讀 5551

使用說明

參考資料

結構體:可以將多種資料型別組合組合起來的結構,可以避免變數的反覆宣告,宣告方式如下,值得注意的是結構體也是種資料型別,可在另一結構體中定義。

struct 結構體名稱

舉例:struct timetime 1

,time 2;//宣告的同時定義

//結構體外定義用struct time time1;

//賦值時struct student alan=;

//和陣列初始化一樣

給乙個char字元陣列賦值用strcpy(alan.name,「alan」);

用typedef來為型別起個別名,如「typedef long index;」。給long這樣的型別起別名主要目的不是簡化程式的書寫,它有兩個用處:一是表明該型別的特殊作用,二是將來有可能要改變這種型別(比如提高精度),如果直接宣告為long型則失去了程式的可惟護性——每乙個變數的宣告都要改動;而宣告為index則使維護程式變得十分簡單——只要改一下typedef語句即可。比如typ

edef

intd

atet

yp

etypedef \, \,int\,\, datetype

typede

fint

date

type

然後下面有n個函式,都是類似這樣的:

datetype typeadd

(datetype a, datetype b)

datetype typediff

(datetype a, datetype b)

datetype func1

(datetype a, datetype b)

如果你沒用dat

etyp

edatetype

datety

pe而是直接用的int

intin

t,當你希望這些函式計算浮點數的時候,你就必須把所有**裡的所有int

intin

t都換成flo

at

float

floa

t或者dou

bl

edouble

double

,而且一旦有地方換漏了就很容易出錯,丟失精度什麼的

c語言裡面對檔案的操作是通過檔案指標,以及一些相關的函式,那麼c++中是如何對檔案進行操作的呢?沒錯,就是通過fstream 這個檔案流來實現的。當我們使用#include 時,我們就可以使用其中的 ifstream,ofstream以及fstream 類(ofstream是從記憶體到硬碟,ifstream是從硬碟到記憶體),也就可以用這三個類來定義相應的物件了,這三個類分別代表乙個輸入檔案,乙個輸出檔案,以及乙個輸入輸出檔案。ifstream類支援》操作符,ofstream類支援《操作符,fstream類同時支援》和《操作符。

ofstream out

("..."

, ios:

:out)

;ifstream in

("..."

, ios::in

);fstream foi

("..."

, ios::in

|ios:

:out)

;

檔案寫操作

下面展示一些內聯**片

// writing on a text file

#include

int main()

return0;

}

檔案讀操作
// reading a text file

#include

#include

#include

int main()

while(!

in.eof())

return0;

}

狀態標誌符
is_open

():檔案是否正常開啟

bad(

):讀寫過程中是否出錯

(操作物件沒有開啟,寫入的裝置沒有空間)

fail()

:讀寫過程中是否出錯

(操作物件沒有開啟,寫入的裝置沒有空間,格式錯誤--比如讀入型別不匹配)

eof(

):讀檔案到達檔案末尾,返回true

good

():以上任何乙個返回true,這個就返回false

#include

#include

using namespace std;

#define ok

1#define error

0#define overflow-2

typedef int status;

typedef char selemtype;

typedef struct stacknodestacknode ,

*linkstack;

//鏈棧的初始化

status initstack

(linkstack &s)

//鏈棧的入棧

status push

(linkstack &

s,selemtype e)

//鏈棧的出棧

status pop

(linkstack &

s,selemtype &e)

//取鏈棧的棧頂元素

selemtype gettop

(linkstack s)

int main()

else

cout<<

"初始化棧失效\n\n"

;break

;case2:

if(flag)

} cout<" ";

}else

cout<<

"棧未建立,請重新選擇\n\n"

; file.

close()

;//開啟的檔案關閉

}break

;case3:

if(flag !=-1

&&flag!=0)

cout<<

"棧頂元素為,\n"

<<

gettop

(s)

;case4:

if(flag)

else

cout<<

"棧未建立,請重新選擇\n\n"

;break;}

}return0;

}

建立乙個.tx

t.txt

.txt

檔案,輸入若干字元,將其重新命名為sqs

tack

.txt

sqstack.txt

sqstac

k.tx

t,將sqs

tack

.txt

sqstack.txt

sqstac

k.tx

t檔案和上方**執行的.cp

p.cpp

.cpp

檔案放乙個資料夾李即可執行。

26鏈棧實現**講解(資料結構)

資料結構中 為什麼要用typedef int datatype ,而不直接用int

零基礎學資料結構 樣張試讀2

下面通過乙個例項來說明鏈式佇列的具體使用。例5 3 程式設計判斷乙個字串行是否是回文。回文是指乙個字串行以中間字元為基準兩邊字元完全相同,即順著看和倒著看是相同的字串行。如字串行 xyzazyx 就是回文,而字串行 xyzbzxy 就不是回文。分析 考察棧的 先進後出 和佇列的 先進先出 的特點,可...

簡單選擇排序 零基礎學資料結構

簡單選擇排序選擇排序的基本思想是 從待排序的元素序列中選擇關鍵字最小或最大的元素,將其放在已排序元素序列的最前面或最後面,其餘的元素構成新的待排序元素序列,並從待排序元素序列中選擇關鍵字最小的元素,將其放在已排序元素序列的最前面或最後面。依次類推,直到待排序元素序列中沒有待排序的元素,選擇排序結束。...

簡單選擇排序 零基礎學資料結構

簡單選擇排序選擇排序的基本思想是 從待排序的元素序列中選擇關鍵字最小或最大的元素,將其放在已排序元素序列的最前面或最後面,其餘的元素構成新的待排序元素序列,並從待排序元素序列中選擇關鍵字最小的元素,將其放在已排序元素序列的最前面或最後面。依次類推,直到待排序元素序列中沒有待排序的元素,選擇排序結束。...