用鍊錶實現乙個棧

2021-09-28 02:20:53 字數 1709 閱讀 4740

#include

#include

typedef

int elementtype;

/*棧元素型別*/

#define success 0

#define failure -1

/*定義棧結構*/

typedef

struct stackinfo

stackinfo_st;

/*函式宣告*/

stackinfo_st *

createstack

(void);

intstack_push

(stackinfo_st *s,elementtype value)

;int

stack_pop

(stackinfo_st *s,elementtype *value)

;int

stack_top

(stackinfo_st *s,elementtype *value)

;int

stack_is_empty

(stackinfo_st *s)

;/*建立棧,外部釋放記憶體*/

stackinfo_st *

createstack

(void)

stack->next =

null

;return stack;

}/*入棧,0表示成,非0表示出錯*/

intstack_push

(stackinfo_st *s,elementtype value)

/*將新的節點新增s->next前,使得s->next永遠指向棧頂*/

temp->value = value;

temp->next = s->next;

/*這一句是指向棧頭部,實際上不用也沒有問題*/

s->next = temp;

return success;

}/*出棧*/

intstack_pop

(stackinfo_st *s,elementtype *value)

/*訪問棧頂元素*/

intstack_top

(stackinfo_st *s,elementtype *value)

/*判斷棧是否為空,空返回1,未空返回0*/

intstack_is_empty

(stackinfo_st *s)

intmain

(void)}

/*訪問棧頂元素*/

int topval;

stack_top

(stack,

&topval)

;printf

("top value %d\n"

,topval)

;/*出棧*/

int tm =0;

for(tm =

0;tm<

25;tm++

)int i =0;

while

(success ==

stack_push

(stack,i)

&& i <5)

printf

("top if stack value is %d\n"

,stack->next->value)

;/*最後記得將棧記憶體都釋放,可自己嘗試實現*/

return0;

}

通過鍊錶實現乙個棧

棧是乙個先進後出的資料結構,本篇文章使用鍊錶來實現乙個棧。一 定義棧的方法介面 這裡定義了棧的幾個主要方法 public inte ce istack二 實現 通過鍊錶實現棧 param public class linkedstackimplements istack 棧頂元素 節點 鍊錶最後的那...

用鍊錶實現棧

基於介面實現 public inte ce stack引用到上次已經實現的鍊錶 linkedlistlist new linkedlist 1 獲取棧的長度 獲取棧的長度 return public int getsize 2 判斷棧是否為空 判斷棧是否為空 return public boolea...

用乙個棧實現另外乙個棧的排序

題目 乙個棧中的型別為整形,現在想將該棧從頂到底按從小到大的順序排序,只允許申請乙個棧 除此之外,可以申請新的變數,但是不能申請額外的資料結構,如何完成排序。思路 設計乙個cur變數,存放stack棧彈出的當前元素,和輔助棧help的棧頂元素進行比較,若大於輔助棧棧頂元素,則將輔助棧中元素一一彈出,...