棧的鏈式儲存表示

2021-09-30 09:09:28 字數 1017 閱讀 6815

typedef  struct  stack_node

elemtype   data ;

struct stack_node  *next ;

} stack_node ;

(1) 棧的初始化

stack_node  *init_link_stack(void)

stack_node  *top ;

top=(stack_node  *)malloc(sizeof(stack_node )) ;

top->next=null ;

return(top) ;

(2)  壓棧(元素進棧)

status push(stack_node *top , elemtype  e)

stack_node  *p ;

p=(stack_node  *)malloc(sizeof(stack_node)) ;

if (!p)  return  error;

/*  申請新結點失敗,返回錯誤標誌 */

p->data=e ;

p->next=top->next  ;

top->next=p ;    /*  鉤鏈  */

return ok;

(3)  彈棧(元素出棧)

status pop(stack_node  *top , elemtype *e)

/*  將棧頂元素出棧  */

stack_node  *p ;

elemtype  e ;

if  (top->next==null )      return error ;    /*  棧空,返回錯誤標誌    */

p=top->next ;

e=p->data ;    /*  取棧頂元素  */

top->next=p->next ;     /*  修改棧頂指標  */

free(p) ;

return ok ;

鏈式表示的棧 鏈式棧2 進製轉換

利用鍊錶模擬棧實現十進位制數2015轉換為對應的八進位制數。分析 一般情況下,把十進位制轉換為八進位制 二進位制等可以使用輾轉相除法,例如將十進位制數2015轉換為八進位制數的過程如圖。轉換後的八進位制數為 3737 在圖中,被除數除以8得到商數,記下餘數,又將商數作為新的被除數繼續除以8,直到商為...

棧的鏈式儲存

線性表的順序儲存來模擬棧時,在尾部新增或者刪除元素,不會涉及到陣列的元素大量移動 用線性表的鏈式儲存來模擬棧的線性儲存,在頭部新增或刪除,不用從頭到尾遍歷 linkstack.h ifndef my linkstack h define my linkstack h typedef void lin...

鏈式儲存mysql 鏈棧 棧的鏈式儲存結構

前面講完了棧的順序儲存結構,我們現在來看看棧的鏈式儲存結構,簡稱為鏈棧。鏈棧是沒有附加頭結點的運算受限的單鏈表。棧頂指標就是鍊錶的頭指標。棧是用棧頂來做插入和刪除操作,那麼對於鏈棧的棧頂放在鍊錶的頭部還是尾部呢?單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢,所以比較好的辦法是把棧頂...