日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构学习:栈

發(fā)布時(shí)間:2024/4/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构学习:栈 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

棧是一種后進(jìn)先出(Last in First Out)的數(shù)據(jù)結(jié)構(gòu)。
由于棧比較好理解,這里只附上用c實(shí)現(xiàn)棧的代碼。

棧的鏈?zhǔn)絻Υ?/strong>

#include <stdio.h> #include <stdlib.h>#define SUCCEED 1 #define FAIL 0 #define TestNum 5typedef int SElemType; typedef int Status;//棧的結(jié)點(diǎn)結(jié)構(gòu)體 typedef struct StackNode {SElemType data;struct StackNode *next; }StackNode,*LinkStackPtr;//棧的結(jié)構(gòu)體 typedef struct LinkStack{LinkStackPtr top;int count; }LinkStack;Status Push(LinkStack *S,SElemType data){LinkStackPtr s = (LinkStackPtr)malloc(sizeof(StackNode));s->data = data;s->next = S->top;S->top = s;S->count++;return SUCCEED; }Status Pop(LinkStack *S,SElemType *e){LinkStackPtr tmp;if(S->count == 0) return FAIL;*e = S->top->data;tmp = S->top;S->top = S->top->next;S->count--;free(tmp);return SUCCEED; }int main(){int i;LinkStack test;SElemType data[]={1,2,3,4,5};SElemType topData;printf("Push test\n");for(i = 0 ; i < TestNum ; i++){Push(&test, data[i]);}printf("The Count of this Stack is %d\n",test.count);printf("Pop test\n");for(i = 0 ; i < TestNum ; i++){Pop(&test,&topData);printf("The top Data is %d\n",topData);printf("There are %d remain in Stack\n",test.count);}return 0; }

棧的順序儲存

#include <stdio.h> #include <stdlib.h>#define SUCCEED 1 #define FAIL 0 #define TestNum 5 #define StackMax 1000 //該棧的最大sizetypedef int SElemType; typedef int Status;//棧的結(jié)點(diǎn)結(jié)構(gòu)體 typedef struct StackNode {SElemType data; }StackNode;//棧的結(jié)構(gòu)體 typedef struct LinkStack{StackNode *Stack;int top; //用來保存棧頂?shù)南禂?shù)int count; //用來保存棧的大小 }LinkStack;Status Push(LinkStack *S,SElemType data){StackNode *stack;stack = S->Stack;S->top++; //更新頭結(jié)點(diǎn)的位置stack[S->top].data = data;S->count ++;return SUCCEED; }Status Pop(LinkStack *S,SElemType *e){if(S->count == 0) return FAIL;*e = S->Stack[S->top].data; //利用e傳回棧頂?shù)臄?shù)據(jù)S->top--;S->count--;return SUCCEED; }//初始化棧 Status initStack(LinkStack *S){S->Stack = (StackNode*)malloc(sizeof(StackNode)*StackMax);S->top = -1;S->count = 0;return SUCCEED; }int main(){int i;LinkStack test;SElemType data[]={1,2,3,4,5};SElemType topData;initStack(&test); //初始化棧printf("Push test\n");for(i = 0 ; i < TestNum ; i++){Push(&test, data[i]);}printf("The Count of this Stack is %d\n",test.count);printf("Pop test\n");for(i = 0 ; i < TestNum ; i++){Pop(&test,&topData);printf("The top Data is %d\n",topData);printf("There are %d remain in Stack\n",test.count);}return 0; }

聊聊個(gè)人對C語言中串行計(jì)算,函數(shù)調(diào)用,與棧之間的初步理解。

當(dāng)調(diào)用函數(shù)時(shí),被調(diào)用函數(shù)的參數(shù)和返回值被儲存當(dāng)前程序的棧區(qū),之后被調(diào)用函數(shù)再為自身的自動(dòng)變量和臨時(shí)變量在棧區(qū)上分配空間。當(dāng)函數(shù)調(diào)用返回時(shí),在棧區(qū)內(nèi)的參數(shù)返回值、自動(dòng)變量和臨時(shí)變量等都會(huì)被釋放。

單線程在程序執(zhí)行時(shí),所走的程序路徑按照連續(xù)順序排下來,前面的必須處理好,后面的才會(huì)執(zhí)行。C語言程序在運(yùn)行是就是單線程串行計(jì)算。當(dāng)遇到調(diào)用其他函數(shù)的時(shí)候,就會(huì)把當(dāng)前的當(dāng)前的參數(shù)傳出去,運(yùn)行的位置當(dāng)前參數(shù)保存在棧頂,并開辟新的棧區(qū)(我是這么理解的)。調(diào)用的函數(shù)運(yùn)行完畢,就返回之前的函數(shù),并接著運(yùn)行下去。
當(dāng)遇到調(diào)用自己的情況(遞歸),就會(huì)將運(yùn)行的位置和當(dāng)前參數(shù)push進(jìn)去,傳參,當(dāng)遞歸結(jié)束后一層層pop直到棧底。當(dāng)遞歸次數(shù)過多就會(huì)overflow。

轉(zhuǎn)載于:https://www.cnblogs.com/he11o-liu/p/7503263.html

總結(jié)

以上是生活随笔為你收集整理的数据结构学习:栈的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产日韩一区二区 | 九一在线观看免费高清视频 | 成人在线激情 | 极品新婚夜少妇真紧 | 天天射综合网站 | 国产夫妻一区 | 找av123导航| 国产稀缺精品盗摄盗拍 | www.久久久精品 | 捆绑少妇玩各种sm调教 | 四虎精品一区二区三区 | 久久久久91 | 国产精品久久久一区二区三区 | 亚洲欧美国产一区二区三区 | 秋霞一区二区 | 嫩草伊人久久精品少妇av | 精品少妇一区二区 | 国产免费av网站 | 日韩综合一区二区三区 | 亚洲手机视频 | 欧美午夜性春猛交 | 爱插美女网 | 亚洲啪啪 | 欧美黄片一区 | 国产精品一区二区三区四 | 激情综合五月 | 日韩欧美一 | 青青操91| 免费日本特黄 | 亚洲最新偷拍 | 色婷婷色综合 | 91偷拍网 | 精品精品视频 | av片在线免费看 | 国产免费毛卡片 | 久久伊人一区 | 欧美激情xxxxx | 在线视频午夜 | 色小说综合 | 在线视频你懂得 | 男生捅女生肌肌 | 亚洲AV无码成人精品国产一区 | 欧美性猛交一区二区三区精品 | 国产黄色大片在线观看 | 亚州a级片 | 国产性猛交╳xxx乱大交 | 成人毛片在线免费观看 | 国产91精品在线观看 | 69中国xxxxxxxxx96| 国产激情久久久 | 黄色在线观看网址 | 色婷婷av久久久久久久 | 成人免费毛片日本片视频 | av在线男人天堂 | 天堂视频免费看 | 亚洲女同av| 中文在线观看高清视频 | 长腿校花无力呻吟娇喘的视频 | 韩国伦理在线看 | 色婷婷色综合 | 九九激情视频 | 91成人国产综合久久精品 | 亚洲精品乱码久久久久久久 | 麻豆爱爱| 国产精品毛片一区二区 | 国产精品桃色 | 国产免费av观看 | 欧美日韩综合一区二区三区 | 热久久精品 | 国产精品厕所 | 香蕉视频在线免费 | 黄色免费网站观看 | 九色视频网| jvid视频| 天天av天天翘 | 国产精品高潮呻吟久久久 | 青青久视频 | 丁香花激情网 | 免费国产成人 | 变态另类ts人妖一区二区 | 激情视频网址 | 国产精品一区二区三区不卡 | 欧美三级a | 一级片免费的 | 91精品一区二区三区在线观看 | 久久久久久久久久久综合 | 美女扒开内裤让男人捅 | 久久久福利视频 | 91av一区| 麻豆一区二区在线 | 精品一区在线播放 | 午夜伦理剧场 | 成人在线你懂的 | 毛片在线视频观看 | 亚洲成人自拍视频 | 石原莉奈在线播放 | 一区二区三区免费视频观看 | 天天爽天天爽夜夜爽毛片 | 综合激情网 |