#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的棧頂元素進行比較,若大於輔助棧棧頂元素,則將輔助棧中元素一一彈出,...