入棧出棧遍歷棧C語言程式
#include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Node { int data; struct Node * pNext; }NODE,* PNODE; typedef struct Stack { PNODE pTop; PNODE pBottom; }STACK,* PSTACK; void init(PSTACK); void pop(PSTACK ps, int *pval); bool empty(PSTACK ps); void traverse(PSTACK ps); void clear(PSTACK ps); void push(PSTACK ps,int val); int main() { STACK s; int val; init(&s); push(&s,1); push(&s,2); push(&s,3); push(&s,4); push(&s,5); push(&s,6); traverse(&s); pop(&s,&val); printf("出棧的元素值是: %d\n",val); traverse(&s); clear(&s); traverse(&s); return 0; } void init(PSTACK ps) { ps->pTop = (PNODE)malloc(sizeof(NODE)); if(NULL == ps->pTop) { printf("動態記憶體分配失敗!\n"); exit(-1); } else { ps->pBottom = ps->pTop; ps->pTop->pNext = NULL; } } bool empty(PSTACK ps) { if(ps->pTop == ps->pBottom) return true; else return false; } void push(PSTACK ps,int val) { PNODE pNew = (PNODE)malloc(sizeof(NODE)); pNew->data = val; pNew->pNext = ps->pTop; ps->pTop = pNew; } void pop(PSTACK ps, int *pval) { if(empty(ps)) { return ;//不能寫return true,因為void無返回值 } else { PNODE r = ps->pTop; *pval = r->data; ps->pTop = r->pNext; free(r); r = NULL; return; } } void traverse(PSTACK ps) { PNODE p = ps->pTop; while(p != ps->pBottom) { printf("%d ",p->data); p = p->pNext; } printf("\n"); return; } void clear(PSTACK ps) { if(empty(ps)) { return; } else { PNODE p = ps->pTop; PNODE q = NULL; while(p != ps->pBottom) { q = p->pNext; free(p); p = q; } ps->pBottom = ps->pTop; } }
相關推薦
03鄰接矩陣的深度和廣度遍歷的C語言實現
返回 算法 ++ 其它 連通圖 edge main fin site #include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h" #define
[linux]二叉樹的建立及其遞迴遍歷(C語言實現)
基礎知識 二叉樹的特點: 每一個節點最多有兩棵子樹,所以二叉樹中不存在度大於2的節點,注意,是最多有兩棵,沒有也是可以的 左子樹和右子樹是有順序的,次序不能顛倒,這點可以在哈夫曼編碼中體現, 順序不同編碼方式不同 -即使樹中某個節點中只有一個子樹的花,也要區分它是左子樹還是右子樹
二叉樹的建立及其遞迴遍歷(C語言實現)
最近在學習資料結構中樹的概念,遲遲不得入門,應該是自己的懶惰和沒有勤加練習導致的,以後應該多加練習 以下是我對二叉樹的一些總結內容 二叉樹的特點有: - 每一個節點最多有兩棵子樹,所以二叉樹中不存在度大於2的節點,注意,是最多有兩棵,沒有也是可以的 左子
利用鏈式佇列實現二叉樹的層次遍歷(C語言)
規則: 判斷樹是否為空,為空則返回; 若不空,從樹的第一層。也就是根節點開始訪問。 從上而下逐層遍歷, 在同一層中,按從左到右的順序對節點逐個訪問。 #include<stdio.h> #include<stdlib.h> t
二叉樹的遍歷(C語言)(資料結構)
二叉樹的基本操作 按前輩們的說法,在嵌入式的開發中並不用得到二叉樹。在次就僅僅對二叉樹的基本操作作簡單介紹。 二叉樹性質 (1)第 i 層最多有 2^(i-1) 個節點。 (2)深度為 k 的二叉樹至多有 2^k - 1 個節點。 (3)若一個二叉樹終端節點個數
二叉樹的建立與遍歷(c語言實現)
#include <stdio.h> #include <stdlib.h> typedef int ElemType; //這裡用int 作為樹結點的資料 typedef
二叉樹層次遍歷(C語言實現)
經過兩天長時間的學習, 通過研究佇列以及二叉樹的相關性質,終於寫出了二叉樹的層次遍歷。 該實現的核心就是使用佇列,每次把訪問到的節點的左右子樹放到佇列裡面去,出隊的時候同樣操作! 感謝@原來如此 , @AlexMok ,兩位同學,在小組相互學習的過程中收穫良
入棧出棧遍歷棧C語言程式
#include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct Node { int data; struct Node * pNext; }NODE,*
順序棧的概念,初始化,回收,入棧,出棧,返回棧頂,遍歷
/*棧,是限定在僅在隊尾進行插入或刪除操作的線性表,因此對於棧來說,表尾端有其特殊含義,稱為棧頂 相應地,表頭端稱為棧底。不含元素的空表稱為空棧。 (限定只能在一端(棧頂)進行操作(入棧和出棧)的線性表,稱之為棧) S=(a1,a2,a3---,an)---a1成為棧底,an
出棧入棧合法性檢驗,C/C++語言程式
“棧.h” #include<stdio.h> #include<stdlib.h> #define A 40 typedef int Datatype; typedef struct Stack{ Datatype stack_array
資料結構——入棧,出棧,佇列相關操作(C語言實現)
閱讀過程之中可能會花費比較多的時間:建議直接翻到最後,有完整的程式碼可以使用 程式準備工作 #include <stdio.h> #include <malloc.h> #include <stdlib.h> #include<proc
出棧序列的遍歷
怎麼樣把所有的可能的出棧順序輸出的 在
9.9-全棧Java筆記:遍歷集合的N種方式總結&Collections工具類
java遍歷集合的N種方式總結【示例1】遍歷List方法1,使用普通for循環for(int i=0;i<list.size();i++){ //list為集合的對象名 String temp = (String)list.get(i); System.out.println
Python自學之路:遞迴、棧和佇列遍歷目錄
遞迴呼叫的概念:一個函式呼叫了自身,稱為遞迴呼叫 遞迴函式的概念:一個能夠被自身呼叫的函式稱為遞迴函式 遞迴一般執行的是迴圈邏輯 編寫遞迴函式的方法: 1、找出臨界條件,比如最小值,最大值等等 2、找出這一次和上一次的關係 3、假設當前函式已經能用,呼叫自身計算
Python:通過棧模擬深度遍歷
(一)棧模擬深度遍歷 (1)深度遍歷 (1)模擬遍歷的流程 ! (2)程式碼實現 import os def Demo(path) : stack = [] stack.append(path) #進棧 while len(sta
層次遍歷二叉樹和採用棧的方式遍歷二叉樹
//中序遍歷非遞迴 @Override public void inOrderByStack() { System.out.println("中序遍歷非遞迴操作"); //建立棧 Deque<Node> stack=new LinkedList&
利用棧中序遍歷二叉樹
//線序建立二叉樹,然後利用棧中序遍歷 #include"stdlib.h" #include"stdio.h" #include"iostream.h" //***********二叉樹的遍歷*********** typedef char TElemType;
Struts2中ModelDriven的作用以及遍歷棧頂的list,map
把當前的類中實體類物件壓入棧頂 public T getModel() { // TODO Auto-generated method stub returnthis.t; } <s:aac
順序棧操作的實驗程式碼(C語言)
在做棧的習題,順手把順序棧的操作總結實現了一下,也算很好的複習了一下結構體,結構體指標,過程中還好好的體會了一把除錯的“樂趣”。 開始的時侯卡在用不用指標上了,最後發現C語言不用指
資料結構中用棧實現表示式求值(c語言實現)
/* 該程式完成了個位數的各類表示式求值 運用了資料結構中的棧及對棧操作的各類函式,操作全用指標完成 如輸入 2+3*(3+3*1)# 輸出結果為 20 經測試個位數的表示式運算結果均正確 */ #include<stdio.h> #include<std