熟練度*n,多寫寫就對鍊錶的內容更加清楚了
在建的時候有點猶豫用node p改的資料能不能在list裡也有改
list的amount沒傳回去?為什麼啊…我直接用它的plist->amount++了!
要在指標裡邊的操作改動的資料才會傳回去,不然就是有點像讀取位址上的數值後對數值進行的操作了。
但是操作是會留下來的,就是p對head的next操作,數鏈上的節點會留下來
在init數鏈的時候忘了讓 p = p->next 了
想明白了,對傳過來的指標或者同級指標進行操作才有用,才能返回到之前的函式。如果對指標用*取的值操作,只能影響到傳回去的下級指標,對這一層指標沒用
棧只是棧頂來做插入和刪除操作,棧頂放在鏈棧的頭部還是尾部呢?
由於單鏈表有頭指標,而棧頂指標也是必須的,那幹嗎不讓它倆合二為一呢?
所以比較好的辦法是把棧頂放在單鏈表的頭部。
結構體存資料和next的node,存節點和head的list
寫輸入函式
我這次是直接把兩個結構體建立了,然後把list引到函式裡
list list =
*plist;
// 2020/2/14 鍊錶棧
#include
#include
typedef
struct nodenode;
typedef
struct listlist;
void
init_stack
(list *plist)
;void
print_stack
(list *plist)
;void
add_data
(list *plist)
;void
pop_data
(list *plist)
;int
main()
void
init_stack
(list *plist)
}while
(input!=-1
);plist->amount = list.amount;
}void
print_stack
(list *plist)
}void
add_data
(list *plist)
void
pop_data
(list *plist)
資料結構 第三章 鍊錶
靜態操作 get search 動態操作 insert remove 靜態儲存 如向量,物理次序與邏輯次序嚴格一致,在靜態操作上迅速,動態慢,get o 1 search o logn 動態儲存 如果鍊錶,動態的分配和 記憶體空間 鍊錶中,相鄰結點互稱為前驅和後繼,鍊錶一般採用循位置訪問 鍊錶的端點...
資料結構之第三章 棧
出棧特點 後進先出 最近忙著準備期末的考試,要知道大學生掛科是一件很可怕的事情。先將一點棧的知識記錄下來,一學期過了課本啥的也就丟了。棧是一種只能在一端進行刪除插入或刪除操作的線性表。棧中的資料元素的邏輯關係呈線性關係,所以棧可以和線性表一樣採用順序儲存結構進行儲存。採用順序儲存結構的棧稱為順序棧。...
資料結構導論 第三章棧)
棧和佇列可看作是特 殊的線性表,它們是 運算受限的線性表 定義 棧是只能在表的一端 表尾 進行 插入和刪除的線性表 特點 後進先出 棧中元素按a1,a2,a3,an的次序進棧,出棧的第乙個元素應 為棧頂元素。換句話說,棧的修改是按後進先出的原則進行的。因此,棧稱為後進先出線性表 lifo 棧的用途 ...