資料結構學習之棧 佇列等

2021-07-09 14:00:17 字數 3039 閱讀 5970

gdb除錯段錯誤

1.ulimit -c unlimited

2.ulimit -c 1000

3.gcc 檔案 -g

4.執行程式(./a.out)生成core檔案

5.gdb a.out core

順序棧1.出棧

datatype popseqstack(seqstack *stack);

功能:從順序棧中出棧

引數:stack:順序棧的位址

返回值:

出棧的元素

2.銷毀

int destroyseqstack(seqstack *stack);

功能:銷毀乙個順序棧

引數:stack:要銷毀棧的位址

返回值:

成功返回0

鏈式棧1.資料結構

typedef struct node

stacknode;

typedef struct stack

linkstack;

2.操作

1.建立

linkstack *createlinkstack(int len);

2.壓棧

int pushlinkstack(linkstack *stack, datatype data);

3.出棧

datatype poplinkstack(linkstack *stack);

4.判斷棧是否為空

int isemptylinkstack(linkstack *stack);

5.判斷棧是否為滿

int isfulllinkstack(linkstack *stack);

6.銷毀

int destorylinkstack(linkstack *stack);

多檔案程式設計

1.構造標頭檔案

檔案中一般存放包含的系統級標頭檔案、定義的

結構體型別、全域性變數、函式的宣告

2.函式檔案

函式檔案中包括函式的定義及實現

3.主函式檔案

包括main函式的實現及函式的呼叫

4.makefile檔案

該檔案用來描述整個工程的編譯原則和規範

5.實現

1.標頭檔案的編寫

#ifndef __head_h__

#define __head_h__

#endif

2.函式檔案的編寫

把所有函式的實現都寫在該檔案中

3.主函式檔案的編寫

把主函式的實現寫在該檔案中

佇列fifo

先進隊的元素先出隊

後進隊的元素後出隊 隊尾

隊頭 1.資料結構的描述

typedef struct queue

seqqueue;

2.操作:

1.建立

seqqueue *createseqqueue(int len)

2.判斷佇列是否為滿

int isfullseqqueue(seqqueue *queue);

3.判斷佇列是否為空

int isemptyseqqueue(seqqueue *queue);

4.進隊

int enterseqqueue(seqqueue *queue, datatype data);

5.出隊

datatype quitseqqueue(seqqueue *queue);

6.銷毀

int destroyseqqueue(seqqueue *queue);

鏈式佇列

1.資料結構

typedef int datatype;

typedef struct node

queuenode;

typedef struct queue

linkqueue;

2.操作

1.建立

linkqueue *createlinkqueue(int len);

2.判斷佇列是否為空

int isemptylinkqueue(linkqueue *queue);

3.判斷佇列是否為滿

int isfulllinkqueue(linkqueue *queue);

4.進隊

int enterlinkqueue(linkqueue *queue, datatype data);

5.出隊

datatype quitlinkqueue(linkqueue *queue);

6.銷毀

int destroylinkqueue(linkqueue *queue);

樹型結構

1.節點

每乙個節點只有乙個前驅,但是可以有

若干個後繼

1.根節點

2.分支節點

3.葉子節點(度數為0的節點)

2.度乙個節點後繼的個數

3.樹的度

節點中最大的度數就是樹的度

4.深度

5.層6.高度

樹的高度和深度值是一樣的

二叉樹每個節點都有兩個分支

1.狀態

1.有左孩子、右孩子

2.只有左孩子

3.只有右孩子

4.沒有左右孩子

2.遍歷

1.前序遍歷

按照根左右的方式逐個遍歷

2.中序遍歷

按照左根右的方式逐個遍歷

3.後序遍歷

按照左右根的方式逐個遍歷

4.層序遍歷

按照層數從左到右依次遍歷

3.資料結構

typedef struct node

treenode;

4.操作

1.建立

treenode *createtree(int start,int end);

功能:建立乙個滿二叉樹

引數:start:根節點的編號

end:要建立到節點的編號

返回值:返回建立樹的根節點位址

2.銷毀

3.前序遍歷

4.中序遍歷

5.後序遍歷

6.層序遍歷

資料結構學習 棧和佇列

棧是限定僅在表尾進行插入和刪除操作的線性表。我們把插入和刪除的一段稱為棧頂,另一端稱為棧底,不含任何元素的棧稱為空棧。由於棧本身是乙個線性表,因此棧的儲存方式也有兩種,分別是順序儲存和鏈式儲存。既然棧是線性表的特列,那麼棧的順序儲存其實也是線性表順序儲存的簡化。我們稱為順序棧。1 兩棧的共享空間 此...

資料結構學習之四 棧與佇列(一)

棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表。注意 表尾,線性表 所以棧又被稱為後進先出的線性表。last in first out 這也是棧的特點 我們將允許插入和刪除的一端稱為棧頂 top 另一端則稱為棧底 bottom 棧的插入操作,被稱為進棧 也稱壓棧 入棧 棧的刪除操作,被稱為出棧...

資料結構學習筆記 棧 佇列 (習題)

1.引言 本文主要講解棧和佇列的一些常見的面試題。2.一些常見的面試題 2.1 題目 輸入兩個整數序列。其中乙個序列表示棧的push順序,判斷另乙個序列有沒有可能是對應的pop順序。為了簡單起見,我們假設push序列的任意兩個整數都是不相等的。比如輸入的push序列是1 2 3 4 5,那麼4 5 ...