最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用C語言實現(xiàn)鏈?zhǔn)綏=榻B

 更新時間:2021年12月20日 11:31:07   作者:weixin_43361320  
大家好,本篇文章主要講的是用C語言實現(xiàn)鏈?zhǔn)綏=榻B,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽

堆棧的基本概念

堆棧是只能在一端增刪元素的表結(jié)構(gòu),該位置稱為棧頂堆棧的基本運算是壓入和彈出,前者相當(dāng)于插入,而后者則是刪除最后插入的元素,形成后進先出的運算規(guī)則最后插入的元素在被彈出之前可以作為棧頂被外界訪問從空棧中彈出,或向滿棧中壓入,都被認(rèn)為是一種錯誤

常見的棧有順序棧和鏈?zhǔn)綏?/strong>

順序棧

在這里插入圖片描述

鏈?zhǔn)綏?/p>

在這里插入圖片描述

- 鏈?zhǔn)綏5腃代碼實現(xiàn)

#include <stdio.h>
#include <stdlib.h>

/*節(jié)點的結(jié)構(gòu)*/
typedef struct node {
    struct node* pnode;
    int data;
}node_t;
/*棧的結(jié)構(gòu)*/
typedef struct stack {
    struct node* top;//棧頂指針
    int size;//棧中數(shù)據(jù)個數(shù)
}stack_t;
/*初始化棧*/
void stack_init(stack_t* stk)
{
    stk->top = NULL;
    stk->size = 0;
}
/*壓棧操作*/
void stack_push(stack_t* stk, int data)
{
    node_t *node = malloc(sizeof(node_t));
    node->data = data;
    node->pnode = stk->top;
    stk->top = node;
    stk->size++;
}
/*彈棧:將棧中數(shù)據(jù)彈入buf*/
void stack_pop(stack_t* stk, int buf[], int size)
{
    for(int i = 0; i < size; ++i) {
        if(stk->size == 0) {
            printf("棧中數(shù)據(jù)已彈凈!\n");
            break;
        }
        node_t* temp = stk->top;
        buf[i] = stk->top->data;
        stk->top = stk->top->pnode;
        stk->size--;
        free(temp);
    }   
}
/*刪除整個棧*/
void stack_deinit(stack_t* stk)
{
    while(stk->size || stk->top) {
        node_t* temp = stk->top;
        stk->top = stk->top->pnode;
        stk->size--;
        free(temp);
    }   
}
/*從棧頂自上而下打印棧中所有數(shù)據(jù)*/
void print_stack(stack_t* stk)
{   
    if(stk->size == 0) {
        printf("棧中無數(shù)據(jù)!\n");
    }   
    for(node_t* node = stk->top;
        node; node = node->pnode) {
        printf("%d ",node->data);
    }   
    printf("\n");
}

/*測試代碼*/
#define N 30
int main(void)
{
    stack_t stack;
    int buf[N];
    stack_init(&stack);
    printf("開始壓棧!\n");
    for(int i = 0; i < N; ++i) {
        stack_push(&stack, i);
    }
    print_stack(&stack);//打印棧中數(shù)據(jù)
    //stack_deinit(&stack);
    printf("開始彈棧!\n");
    stack_pop(&stack, buf, N);//彈棧
    print_stack(&stack);
    printf("取出的數(shù)據(jù)為:");
    for(int i = 0; i < sizeof(buf) /
        sizeof(buf[0]); ++i) {
        printf("%d ", buf[i]);
    }
    printf("\n");
    return 0;
}

代碼運行效果

在這里插入圖片描述

到此這篇關(guān)于用C語言實現(xiàn)鏈?zhǔn)綏=榻B的文章就介紹到這了,更多相關(guān)C語言鏈?zhǔn)綏?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言中sizeof 和 strlen的區(qū)別

    C語言中sizeof 和 strlen的區(qū)別

    sizeof?和?strlen?是兩個常用于 C/C++ 語言中的函數(shù)或操作符,本文主要介紹了C語言中sizeof 和 strlen的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • C++操作json文件以及jsoncpp配置詳解

    C++操作json文件以及jsoncpp配置詳解

    這篇文章主要給大家介紹了關(guān)于C++操作json文件以及jsoncpp配置的相關(guān)資料,文中通過實例代碼及圖片介紹的非常詳細,需要的朋友可以參考下
    2021-06-06
  • C語言?超詳細講解算法的時間復(fù)雜度和空間復(fù)雜度

    C語言?超詳細講解算法的時間復(fù)雜度和空間復(fù)雜度

    算法復(fù)雜度分為時間復(fù)雜度和空間復(fù)雜度。其作用:?時間復(fù)雜度是度量算法執(zhí)行的時間長短;而空間復(fù)雜度是度量算法所需存儲空間的大小
    2022-03-03
  • MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟

    MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟

    本文主要介紹了MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C++ 繼承詳解及實例代碼

    C++ 繼承詳解及實例代碼

    這篇文章主要介紹了C++ 繼承詳解,這里整理了詳細的資料及實例代碼,有需要的小伙伴可以參考下
    2016-09-09
  • C++小知識:用++i替代i++

    C++小知識:用++i替代i++

    今天小編就為大家分享一篇關(guān)于C++小知識:用++i替代i++,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • C++ vector的用法小結(jié)

    C++ vector的用法小結(jié)

    這篇文章主要介紹了c++中,vector是一個十分有用的容器,下面對這個容器做一下總結(jié)
    2013-12-12
  • 平衡二叉樹AVL操作模板

    平衡二叉樹AVL操作模板

    這篇文章主要介紹了平衡二叉樹AVL操作模板,需要的朋友可以參考下
    2014-02-02
  • qt中 painter 的用法及原理示例詳解

    qt中 painter 的用法及原理示例詳解

    QPainter是Qt的一個繪圖類,它的主要任務(wù)是在繪圖設(shè)備上進行2D圖形渲染,這篇文章主要介紹了qt中 painter 的用法以及原理,需要的朋友可以參考下
    2023-07-07
  • C語言實現(xiàn)簡單掃雷游戲

    C語言實現(xiàn)簡單掃雷游戲

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單掃雷游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02

最新評論

岐山县| 永登县| 保靖县| 延安市| 陵水| 朝阳区| 淮安市| 盘山县| 高平市| 博乐市| 蕲春县| 新巴尔虎左旗| 宿迁市| 彭水| 天全县| 宁化县| 陕西省| 武汉市| 西吉县| 绩溪县| 荣昌县| 金湖县| 犍为县| 乌什县| 克什克腾旗| 洛隆县| 阿荣旗| 晋江市| 神农架林区| 盐山县| 石城县| 荆州市| 通城县| 炉霍县| 台南县| 乌拉特前旗| 会泽县| 凤翔县| 腾冲县| 石门县| 湖北省|