05黑馬資料結構筆記之棧的順序儲存 簡單

2021-10-23 02:43:15 字數 3311 閱讀 3527

1 思想:使用固定陣列來實現,交給結構體管理。棧的插入與刪除都只能在棧頂操作。

//存放棧陣列的最大值

#define max_size 1024

//管理棧結構體--1個

//企業鍊錶兩個

typedef

struct seqstackseqstack;

**實現:

1)標頭檔案.h:

#ifndef seqstack_h

#define seqstack_h

//存放棧陣列的最大值

#define max_size 1024

//管理棧結構體--1個

//企業鍊錶兩個

typedef

struct seqstackseqstack;

//順序棧初始化

seqstack *

init_seqstack()

;//插入

intpush_seqstack

(seqstack *stack,

void

* data)

;//刪除

intpop_seqstack

(seqstack *stack)

;//不需要查詢與列印,因為不支援隨機訪問

//是否為空

intisempty_seqstack

(seqstack *stack)

;//返回首元素

void

*getfront_seqstack

(seqstack *stack)

;//返回陣列大小

intgetsize_seqstack

(seqstack *stack)

;//清空棧

intclear_seqstack

(seqstack *stack)

;//釋放記憶體

intdestory_seqstack

(seqstack *stack)

;//總結:就入棧需要兩個引數

// 棧陣列記得加括號,與動態陣列不一樣,動態是malloc出來的空間,不需要加

#endif

2).cpp檔案:

#include

"seqstack.h"

#include

#include

#include

//順序棧初始化

seqstack *

init_seqstack()

stack-

>size=0;

return stack;

}//插入

intpush_seqstack

(seqstack *stack,

void

* data)

if(data==

null

)//如果超過預定記憶體也返回

if(stack-

>size==max_size)

//每次只能在棧底插入

stack-

>data[stack-

>size]

=data;

stack-

>size++

;return0;

}//刪除

intpop_seqstack

(seqstack *stack)

if(stack-

>size==0)

stack-

>data[stack-

>size]

=null

;//可不寫

stack-

>size--

;return0;

}//不需要查詢與列印,因為不支援隨機訪問

//是否為空

intisempty_seqstack

(seqstack *stack)

if(stack-

>size==0)

return0;

}//返回棧頂元素

void

*getfront_seqstack

(seqstack *stack)

return stack-

>data[stack-

>size-1]

;}//返回陣列大小

intgetsize_seqstack

(seqstack *stack)

//清空棧

intclear_seqstack

(seqstack *stack)

//直接size為0 就是清空

stack-

>size=0;

return0;

}//釋放記憶體

intdestory_seqstack

(seqstack *stack)

free

(stack)

;return0;

}

3)主函式測試:

#include

"seqstack.h"

#include

#include

#include

typedef

struct personperson;

void

test01()

; person p2=

; person p3=

; person p4=

; person p5=

;//插入資料

push_seqstack

(stack,

&p1)

;push_seqstack

(stack,

&p2)

;push_seqstack

(stack,

&p3)

;push_seqstack

(stack,

&p4)

;push_seqstack

(stack,

&p5)

;//返回陣列大小

int size =

getsize_seqstack

(stack)

;printf

("%d\n"

,size)

;//只能自行列印

while

(isempty_seqstack

(stack)==0

)destory_seqstack

(stack);}

intmain()

資料結構之順序棧

棧的順序儲存結構用一組位址連續的儲存單元 陣列,依次存放自棧底到棧頂的資料元素。最簡單的一種棧的寫法如下 define maxsize 100 int stack maxsize int top 棧頂位置 void initstack void clearstack int gettop int e...

資料結構之順序棧

前面我們學習了順序鍊錶,我們可能會覺得順序鍊錶有啥用呢?基本都是要被淘汰了用法。呵呵,俗話說 存在的即是合理的。下面我來炫炫它的用法,請睜大你的眼睛,下面是見證奇蹟的時刻。第六個例子,順序棧的實現 標頭檔案要包含兩部分,乙個是我們先前實現的順序表,不清楚,出門右轉,看前面的文章 標頭檔案 ifnde...

資料結構之順序棧

include include include define n 32 typedef struct stack seqstack t 建立堆疊 seqstack t creat empty seqstack 建立乙個空的順序棧 申請記憶體空間 並將棧頂初始化為 1 int stack is emp...