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...