目錄
1.新建棧型別
2.棧的初始化
3.棧的建立
4.出棧
5.入棧
6.棧的輸出
7.測試
8.總結
棧是一種僅限於在表尾進行插入和刪除操作的線性表,和之前介紹過的線性表一樣,它也有線性和鏈式兩種結構,在這裡我向大家介紹線性棧的建立與使用,鄙人只是理工大的一名大二的學生,不對的地方請大家多多指教。好了讓我開啟vs 建立乙個新專案然後「ctrl +shift +a 」建立乙個乙個main 檔案開始我們的程式設計之旅吧。
#include#include#includetypedef struct stack *st,stack;
首先我們新建乙個stack結構體,裡面包含4個int指標top,base,length,還有position-top,其中length,和position_top在作者我在之前考慮到指標引用的問題把他們設定成了指標,後來想起來完全沒有這個必要,如果各位嫌麻煩的話不妨把他們設定成普通的常量。這裡的typedef定義了stack的指標型別,和stack的別名stack;top為棧頂元素的指標,base則為棧底元素的指標,考慮到他們都是指標的原因,所以定義了一些隨機變數,主要是解決野指標的問題,另外定義position_top的目的是為了更好地記錄top的位置,也是為了更好地確定棧中元素的個數。
void initstack(st st,int len)
initstack函式有兩個引數,乙個是棧的指標另外乙個則是要建立棧的大小。首先讓棧的長度length指向len,再用malloc的方法一次性申請所需要的空間,這裡我們的棧主要是放整型資料,故使用int.開始的時候棧中沒有元素故讓base=top;position_top指向0.
void creatstack(st st)
printf("data%d= ", *(st->position_top));
scanf_s("%d", st->top);
getchar();
st->top++;
*(st->position_top)=*(st->position_top)+1;
printf("%d \n", *(st->position_top));
printf("do you want to input the data again ?");
response = getchar();
}}
接下啦我們寫creatstack函式
使用response+while 的方式控制與使用者的互動介面,在while後面加乙個判斷,主要判斷滿棧的情況,增加程式的健壯性。新增新元素的原理很簡單,想讓top指向入棧的數值,然後top++;讓top等於下乙個節點;每次新增進新元素後position_top指向的值都加一,注意scanf_s後面有個getchar();這主要是為了「吃掉」輸入數值後敲的那個inter鍵。
void popstack(st st,int *e)
popstack函式有兩個引數,乙個是操作棧的指標,另外乙個指標指向出棧的值。
讓top等於它上乙個指標,然後讓position_top指向的值減一。
void pushstack(st st,int da)
*(st->top) = da;
st->top++;
*(st->position_top) = *(st->position_top) + 1;
}
入棧函式就是讓top指向入棧元素da,然後top++,position_top指向的值加一,注意*(position_top)++的語句是不對的要按上面**才行。
void displaystack(st st)
getchar();
}
使用迴圈,從base到top,依次輸出指向的值。
void stacktest()
在主函式中呼叫測試函式
int main()
程式執行結果
也沒有什麼好總結的啦謝謝大家的支援。啦啦啦
棧的學習總結
鏈棧其結點結構與單鏈表一致。首先第一步與單鏈表構建一致,先定義結點。每個結點儲存著資料也儲存這下面資料的位址。基本操3作與順序棧一致。在入棧出棧的操作上更偏向類似單鏈表中的插入刪除操作。總結來說 棧類似乙個死胡同,先進的只能後出,後進的只能先出。具體實現 資料結構課本上有些十分詳細的介紹。通過資料查...
對於幾種排序方法的學習總結
這段時間學習了演算法導論中前八章的幾種排序方法,有插入排序 合併排序 堆排序 快速排序 計數排序 基數排序和桶排序,其中插入排序 合併排序 堆排序和快速排序都屬於比較排序,即演算法的核心是比較陣列的兩個元素的大小來確定先後關係,基數排序 計數排序和桶排序屬於線性時間排序,即時間呈輸入規模的線性增長。...
棧 學習筆記 總結
棧 stack 是限制插入和刪除只能在乙個位置上進行的表,該位置是表的末端,叫做棧的頂。對棧的基本操作有push 進棧 和 pop 出棧 前者相當於插入,後者則是刪除最後插入的元素。所以棧有時叫做lifo 後進先出 表。part 1 棧的基本了解 對棧的第一次接觸也是在c語言的學習中。不同的資料存放...