資料結構 一 棧的基本操作C語言實現

2021-09-29 18:24:15 字數 2029 閱讀 2283

撤回,即 ctrl+z,是我們最常見的操作之一,大多數應用都會支援這個功能。你知道它是怎麼實現的嗎?答案是這樣的:把之前的應用狀態(限制個數)儲存到記憶體中,最近的狀態放到第乙個。這時,我們需要棧(stack)來實現這個功能。

棧中的元素採用 lifo (last in first out),即後進先出。

下圖的棧有 3 個元素,3 在最上面,因此它會被第乙個移除:

棧的變數定義

#define stack_size 10

#define ok 1

#define error -1

#define empty 1

#define noempty !empty

#define stackincrement 10

typedef

int elemtype;

typedef

int status;

棧的結構體

typedef struct sqstack

sqstack;

棧的初始化

status init_stack

(sqstack *s)

入棧:

status push

(sqstack *s,elemtype e)

s->array[

(s->top)++]

= e;

return ok;

}

出棧:

status pop

(sqstack *s,elemtype *e)

(s->top)--;

*e = s->array[s->top]

;return ok;

}

獲取棧頂元素

status gettop

(sqstack *s,elemtype *e)

*e = s->array[s->top-1]

;return ok;

}

判斷是否為空

status isempty

(sqstack *s)

return noempty;

}

返回棧的長度

status stacklength

(sqstack *s)

return

(s->top-s->bottom)

;}

清理棧

status clearstack

(sqstack *s)

輸出所有棧元素:

status output_stack

(sqstack *s)

j = len;

for(i=len-

1;i>=

0;i--

)return ok;

}

測試函式:

int

main

(int argc,

char

* ar**)

else

if(i ==2)

else

}else

if(i ==3)

else}}

else

if(i ==4)

else

}else

if(i ==5)

else

}else

if(i ==6)

else

}else

if(i ==7)

else

}else

}return0;

}

資料結構棧的基本操作實現 C語言實現

棧的基本操作的實現 棧 是一種受限的鍊錶只允許在同一端插入 入棧 push 和刪除 出棧 pop 所以棧遵循先進後出的原則 棧的基本操作的實現如下 include include typedef int elementtype typedef struct node node,stack 定義基本操...

資料結構與演算法C語言實現 棧的基本操作

雨中漫步 問題 編寫程式任意輸入棧長度和棧中的元素值,構造乙個順序棧,對其進行清空 銷毀 入棧 出棧以及取棧頂元素操作。include include define maxsize 100 typedef int elemtype typedef struct sqstack 順序棧型別 void ...

資料結構4 棧的c語言實現及基本操作

棧是一種先進先出 last in first out,lifo 的操作受限的線性表,只能在一端進出操作,可以進出的一端稱為棧頂 top 另一端稱為棧底 base 棧也是以用順序儲存和鏈式儲存兩種方式儲存 動態分配 typedef struct sqstacksqstack 靜態分配 typedef ...