對於棧學習的總結

2021-08-28 19:52:37 字數 2173 閱讀 7015

目錄

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語言的學習中。不同的資料存放...