好久不見,前面我們學過了資料結構的順序棧。今天我們來學習下鏈式棧的實現,
鏈式棧的話,
還是要利用前面我們實現的鏈式鍊錶,不知道鏈式鍊錶的,出門左轉,前面就有介紹。
第七個例子,鏈式棧的實現:
注:把我們先前實現的鏈式鍊錶的標頭檔案和實現檔案包含進來
標頭檔案
#ifndef _linkstack_h_
#define _linkstack_h_
typedef void linkstack;
linkstack* linkstack_create();
void linkstack_destroy(linkstack* stack);
void linkstack_clear(linkstack* stack);
int linkstack_length(linkstack* stack);
int linkstack_push(linkstack* stack, void* item);
void* linkstack_top(linkstack* stack);
void* linkstack_pop(linkstack* stack);
#endif
實現檔案
#include "linkstack.h"
#include "linklist.h"
#include typedef struct tag_linkstacknode
tlinkstacknode;
linkstack* linkstack_create()
void linkstack_destroy(linkstack* stack)
void linkstack_clear(linkstack* stack)
}int linkstack_length(linkstack* stack)
int linkstack_push(linkstack* stack, void* item)
return ret;
}void* linkstack_top(linkstack* stack)
return ret;
}void* linkstack_pop(linkstack* stack)
return ret;
}
這樣的炫技在前面順序棧見過吧!現在還熟悉嗎?
測試檔案
#include #include #include "linkstack.h"
int main(int argc, char *argv)
system("pause");
return 0;
}
好了,鏈式棧的實現就是這麼簡單,相信你肯定看得懂,後面我會慢慢更新一些高階資料結構的應用。 資料結構 棧之鏈式儲存
跟鍊錶結構一樣,只是多了條限制 只能從煉表頭插入和刪除。原始碼 include include include include 棧的鏈式儲存 typedef struct data typedef struct stack 初始化空棧 void initstack stack s 判斷是否為空棧 i...
資料結構 鏈式棧
編譯錯誤 passing const linkstack as this argument discards qualifiers fpermissive 解決方法 c 中const 引用的是物件時只能訪問該物件的const 函式,因為其他函式有可能會修改該物件的成員,編譯器為了避免該類事情發生,會...
資料結構之鏈式棧的實現
上篇部落格我們已經對棧的基本操作有了介紹,現在我們利用鍊錶的方式來實現一下棧的基本操作。其實利用鍊錶更好實現棧,因為我們鍊錶的頭插與頭刪恰好可以與棧相對應,先進的後出,這裡我們就不過多的贅述,直接進行實現即可。pragma once include include include typedef c...