上篇部落格我們已經對棧的基本操作有了介紹,現在我們利用鍊錶的方式來實現一下棧的基本操作。
其實利用鍊錶更好實現棧,因為我們鍊錶的頭插與頭刪恰好可以與棧相對應,先進的後出,這裡我們就不過多的贅述,直接進行實現即可。
#pragma once
#include
#include
#include
typedef
char linkstacktype;
typedef
struct linkstacknodelinkstacknode;
linkstacknode* head;
void linkstackinit(linkstacknode** phead);//初始化鏈式棧
void linkstackpush(linkstacknode** phead, linkstacktype value);//鏈式棧的入棧
void linkstackpop(linkstacknode** phead);//鏈式棧的出棧
void destroystack(linkstacknode** phead);//銷毀鏈式棧
int linkstackgetfront(linkstacknode* head, linkstacktype* value);//獲取鏈式棧棧頂元素
#include
"linkstack.h"
#define head printf("***************===%s***************==\n",__function__);
linkstacknode* creatstacknode(linkstacktype value)
void linkstackinit(linkstacknode** phead)//初始化鏈式棧
*phead =
null;
return;
}void linkstackpush(linkstacknode** phead, linkstacktype value)//鏈式棧的入棧
linkstacknode* tmp =
*phead;
(*phead) = creatstacknode(value);
(*phead)->next = tmp;
return;
}void linkstackpop(linkstacknode** phead)//鏈式棧的出棧
if(*phead ==
null)
linkstacknode* to_delete =
*phead;
*phead = to_delete->next;
free(to_delete);
to_delete =
null;
return;
}void destroystack(linkstacknode** phead)//銷毀鏈式棧
if(*phead ==
null)
linkstacknode* cur =
*phead;
while(cur !=
null)
return;
}int linkstackgetfront(linkstacknode* head, linkstacktype* value)//獲取鏈式棧棧頂元素
*value = head->
data;
return
1;}
//測試**如下
void linkstackprint(linkstacknode* head, char* msg)
linkstacknode* cur = head;
while(cur != null)
printf("\n");
}void testpush()
void testpop()
void testgetfront()
int main()
資料結構棧(鏈式實現)
真正的棧操作是在棧頂,這裡給出的棧是帶了頭結點的棧,也就是說head next代表圖示棧頂,head next data是1 實現 include include typedef int datatype typedef struct snode lsnode 初始化帶頭結點的鏈式堆疊,初始化函式中...
資料結構之鏈式棧
好久不見,前面我們學過了資料結構的順序棧。今天我們來學習下鏈式棧的實現,鏈式棧的話,還是要利用前面我們實現的鏈式鍊錶,不知道鏈式鍊錶的,出門左轉,前面就有介紹。第七個例子,鏈式棧的實現 注 把我們先前實現的鏈式鍊錶的標頭檔案和實現檔案包含進來 標頭檔案 ifndef linkstack h defi...
資料結構 棧 c鏈式實現
目的 學習資料結構,學校c語言 功能 棧的鏈式結構實現 include include define ok 1 define false 0 define true 1 define error 0 typedef int status typedef int selemtype 結點型別 type...