適合新手的鏈棧程式碼
鏈棧的實現
程式碼實現
提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文件
前言
提示:適合新手入門簡單粗暴。
提示:以下是本篇文章正文內容,下面案例可供參考
一、棧是什麼?
示例:先入後出。
二、程式碼
1.實現
程式碼如下(示例):
#include <iostream>## 棧
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef int ElemType;
typedef int Status;
/*結點的結構*/
typedef struct node
{
ElemType data;
struct node *next;
}Node;
/*棧的結構*/
typedef struct
{
struct node *top; //棧頂指標
int count; //用來記錄棧元素的個數
}Stack;
Status InitStack(Stack *s)
{
if(NULL == s)
{
return -1;
}
s->top = NULL; //棧空,棧頂指標指向NULL
s->count = 0;
return 0;
}
Status push(Stack *s, ElemType e)
{
if(NULL == s)
{
return -1;
}
Node *p = (Node *)malloc(sizeof(Node)); //申請一個節點
if(NULL == p)
{
return -1;
}
p->data = e;
p->next = s->top; //令新建立的節點指向當前的棧頂
s->top = p; //棧頂指標指向新壓棧的元素
s->count++;
return 0;
}
Status pop(Stack *s, ElemType *e)
{
if(NULL==s || NULL==s->top)
{
return -1;
}
*e = s->top->data; //取出棧頂元素的值
Node *temp = s->top; //儲存當前要出棧的棧頂元素的地址
s->top = s->top->next; //將棧頂指標移向下一個元素
s->count--;
free(temp); //釋放當前棧頂元素的指標
return 0;
}
int main(){
Stack s;
int e;
InitStack(&s);
push(&s,5);
push(&s,6);
push(&s,7);
pop(&s,&e);
printf("%d",e);
return 0;
}
2.細節
程式碼如下(示例):
typedef struct node
{
ElemType data;
struct node *next;
}Node;
typedef struct
{
struct node *top; //棧頂指標
int count; //用來記錄棧元素的個數
}Stack;
要注意Node為棧每個節點的型別而Stack為整個棧的型別,通過對top指標的呼叫來
實現棧的各項操作
在這裡要是對連結串列很熟悉的話就可以知道push壓棧其實就是單連結串列裡面的頭插法
頭插法就是先入後出,只不過棧裡面只允許對top端進行操作
新手在不僅要關注棧具體操作演算法的實現,也要理解主函式裡面的* &
什麼時候用Stack *s,什麼時候用Stack s,什麼時候用&s。
Stack s;
push(&s,7);
pop(&s,&e);
總結
提示:想要真正瞭解棧和後面的佇列就要熟悉單連結串列的基本操作
對頭插法和尾插法建立單連結串列都要熟悉,在單連結串列的基礎上進而去了解棧的實現。
相關文章
- git命令使用(適合新手)Git
- 適合新手的Java程式設計課程訓練網址Java程式設計
- 如何合併視訊?是否適合新手操作?
- 最適合和最不適合新手使用的幾款 Linux 發行版Linux
- 適合新手入門Spring Security With JWT的demoSpringJWT
- 適合 Java 新手的開源專案集合——在 GitHub 學程式設計JavaGithub程式設計
- Flutter | 一些很適合新手練習的DemoFlutter
- 適合 JS 新手學習的開源專案——在 GitHub 學程式設計JSGithub程式設計
- 適合 Go 新手學習的開源專案——在 GitHub 學程式設計GoGithub程式設計
- vue整合ElementUI(適合新手快速入門)VueUI
- 如何選擇適合你的程式碼風格?
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- VUE3 之 使用 Mixin 實現程式碼的複用 - 這個系列的教程通俗易懂,適合新手Vue
- 適合 C++ 新手學習的開源專案——在 GitHub 學程式設計C++Github程式設計
- GitHub 上有哪些適合新手跟進的優質專案?Github
- 適合新手小白的UI學習路線完整版UI
- GitHub 上適合新手的開源專案(Python 篇)GithubPython
- 短視訊的平臺有哪些?哪些平臺適合新手?
- 盤點!最適合新手使用的Linux作業系統Linux作業系統
- 適合Mac新手看的的小技巧:輸入法如何轉換Mac
- 適合中小企業的低程式碼平臺有哪些?
- 區塊鏈適合什麼行業區塊鏈行業
- 低程式碼平臺適合哪些人群使用?
- 適合IT經理的程式語言
- GitHub 上有哪些適合新手跟進的優質專案?(附地址)Github
- 最適合新手入門的SpringCloud教程 7—OpenFeign「F版本」SpringGCCloud
- 推薦一些適合新手練手的Python專案Python
- 教學|ZBrush繪製頭部模型,適合萌新食用的新手教程ZBrush模型
- 2022年適合新手使用的Linux發行版!Linux
- 外貿怎麼做?最適合新手的外貿流程來了
- 如何在網路上找到適合的外鏈平臺
- 如何挑選擇合適的低程式碼開發平臺
- 最適合使用低程式碼平臺的四個行業行業
- Linux有哪些版本?哪個比較適合新手使用?Linux
- 程式設計女孩兒:誰說女生不適合寫程式碼!程式設計
- 新聞外鏈與論壇外鏈:選擇更適合的引流方式
- seo外鏈釋出:如何選擇合適的外鏈釋出平臺?
- 如何選擇一個適合發外鏈的論壇?