資料結構中的棧基本操作,我這裡是也是為了學習記錄我自己的書寫的**過程.其中包含取棧的新建,新增元素,刪除元素,取指定索引值,向元素尾部追加元素 等等!
資料結構中的棧基本操作,我這裡是也是為了學習記錄我自己的書寫的**過程.其中包含取棧的新建,新增元素,刪除元素,取指定索引值,向元素尾部追加元素 等等!
//使用鍊錶實現棧的結構
//定義乙個鍊錶結構
type node struct
}//定義乙個棧鍊錶結構
type linkedliststack struct
//新建乙個鍊錶棧
func
newlinkedliststack()
*linkedliststack
}
//判斷棧是否為空
func
(this *linkedliststack)
isempty()
bool
return
false
}
//向鍊錶棧push加入資料
func
(this *linkedliststack)
push
(v inte***ce
)}
//刪除棧頂的元素 並返回棧頂的元素
func
(this *linkedliststack)
pop(
)inte***ce
v := this.topnode.val
//刪除元素
this.topnode = this.topnode.next
return v
}
//取棧頂表的資料
func
(this *linkedliststack)
top(
)inte***ce
return this.topnode.val
}
//清空鍊錶棧
func
(this *linkedliststack)
flush()
//列印
func
(this *linkedliststack)
print()
else
}}
測試方法我上面都追加有測試的命令.可以測試使用
//測試鍊錶棧
//go test -v -run testnewlinkedliststack -o stackbaseonlinkedlist_test.go
func
testnewlinkedliststack
(t *testing.t)
//測試空煉表棧
//go test -v -run testlinkedliststack_isempty -o stackbaseonlinkedlist_test.go
func
testlinkedliststack_isempty
(t *testing.t)
//測試push鍊錶棧
//go test -v -run testlinkedliststack_push -o stackbaseonlinkedlist_test.go
func
testlinkedliststack_push
(t *testing.t)
//測試pop鍊錶棧
//go test -v -run testlinkedliststack_pop -o stackbaseonlinkedlist_test.go
func
testlinkedliststack_pop
(t *testing.t)
//測試top鍊錶棧
//go test -v -run testlinkedliststack_top -o stackbaseonlinkedlist_test.go
func
testlinkedliststack_top
(t *testing.t)
//測試top鍊錶棧
//go test -v -run testlinkedliststack_flush -o stackbaseonlinkedlist_test.go
func
testlinkedliststack_flush
(t *testing.t)
資料結構 棧 鍊錶實現
鍊錶實現的棧可以克服在程式執行時也無法估計棧容量大小的情況 棧中的元素是儲存在稱為節點的類中,每個節點都包含乙個資料域和乙個指標域 資料域儲存棧的值,指標域指示棧中下乙個值得位置 而棧類的資料成員是需要乙個指向棧頂的指標即可 類宣告如下 typedef int stackelement class ...
資料結構 棧 鍊錶的實現
鍊錶的實現和陣列的實現最大的不同在於鍊錶的插入操作代價要低於陣列,不過總體代價還是陣列更低,因為鍊錶的構造和連線部分代價其實很高。基本結構 private node head null push操作 public void push string str pop操作 public string po...
資料結構 棧的鍊錶實現
1.構造結構體作為鍊錶的節點 typedef struct node linkstack 2.建棧操作 為指標s分配一塊空間,返回後作為鍊錶的頭節點。其後繼為空,表示棧為空。向棧中壓入元素後,它的直接後繼就是棧頂元素。linkstack createstack 3.判斷棧是否為空 int isemp...