<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      線性結構常見應用之棧[基于郝斌課程]

      棧的定義:

      ??一種可以實現“先進后出”的存儲結構

      ??棧類似于箱子,先放進去的最后取出來,最后放入的先取出來

      棧的分類:

      ??靜態棧的內核是數組

      ??動態棧的內核是鏈表

      棧的算法:

      ??出棧

      ??壓棧

      棧的應用:

      ??函數調用

      ??中斷

      ??表達式求值

      ??內存分配

      ??緩沖處理

      ??迷宮

      
      /*
      @file      main.c
      @brief     線性結構常見應用之棧
      @author    EricsT (EricsT@163.com)
      @version   v1.0.0
      @date      2025-09-23
      @history   2025-09-23 EricsT - 新建文件
      */
      
      #include <stdio.h>
      #include <malloc.h>
      #include <stdlib.h>
      
      typedef struct NODE
      {
      	int data;
      	NODE* ptrNext;
      }* PtrNode, Note;
      
      typedef struct STACK
      {
      	PtrNode ptrTop;
      	PtrNode ptrBottom;
      }* PtrStack, Stack;
      
      void InitStack(PtrStack ptrStack);//初始化
      void PushStack(PtrStack ptrStack, int pushValue);//壓棧
      bool PopStack(PtrStack ptrStack);//出棧
      void TraverseStack(const PtrStack ptrStack);//遍歷
      bool IsEmptyStack(const PtrStack ptrStack);//判斷是否為NULL
      void ClearStack(PtrStack ptrStack);//清空棧
      
      int main(void)
      {
      	Stack stack;
      
      	InitStack(&stack);
      
      	int pushValue;
      	printf("請輸入插入數值");
      	scanf("%d", &pushValue);
      	PushStack(&stack, pushValue);
      
      	printf("請輸入插入數值");
      	scanf("%d", &pushValue);
      	PushStack(&stack, pushValue);
      
      	printf("請輸入插入數值");
      	scanf("%d", &pushValue);
      	PushStack(&stack, pushValue);
      
      	printf("請輸入插入數值");
      	scanf("%d", &pushValue);
      	PushStack(&stack, pushValue);
      
      	printf("請輸入插入數值");
      	scanf("%d", &pushValue);
      	PushStack(&stack, pushValue);
      
      	TraverseStack(&stack);
      
      	PopStack(&stack);
      
      	TraverseStack(&stack);
      
      	ClearStack(&stack);
      
      	TraverseStack(&stack);
      
      	return 0;
      }
      
      void InitStack(PtrStack ptrStack)
      {//頂棧和底棧都指向空節點
      
      	ptrStack->ptrBottom = (PtrNode)malloc(sizeof(NODE));
      	ptrStack->ptrBottom->ptrNext = NULL;
      
      	ptrStack->ptrTop = ptrStack->ptrBottom;
      }
      
      void PushStack(PtrStack ptrStack, int pushValue)
      {
      	PtrNode ptrPushNode = (PtrNode)malloc(sizeof(NODE));
      
      	ptrPushNode->data = pushValue;
      	ptrPushNode->ptrNext = ptrStack->ptrTop;
      
      	ptrStack->ptrTop = ptrPushNode;
      }
      
      void TraverseStack(const PtrStack ptrStack)
      {
      	PtrNode ptrNodeCur = ptrStack->ptrTop;
      
      	//while (NULL != ptrNodeCur->ptrNext)
      	//{
      	//	printf("%d ", ptrNodeCur->data);
      	//	ptrNodeCur = ptrNodeCur->ptrNext;
      	//}
      
      	while (ptrStack->ptrBottom != ptrNodeCur)
      	{
      		printf("%d ", ptrNodeCur->data);
      		ptrNodeCur = ptrNodeCur->ptrNext;
      	}
      
      	printf("\n");
      }
      
      bool PopStack(PtrStack ptrStack)
      {
      	if (IsEmptyStack(ptrStack))//空棧時無法出棧
      		return false;
      
      	PtrNode ptrNode = ptrStack->ptrTop;
      	ptrStack->ptrTop = ptrNode->ptrNext;
      	free(ptrNode);
      	//ptrStack->ptrTop = ptrStack->ptrTop->ptrNext;這種寫法無法釋放原來頂棧的內存
      	return true;
      }
      
      bool IsEmptyStack(const PtrStack ptrStack)
      {
      	if (ptrStack->ptrBottom == ptrStack->ptrTop)
      		return true;
      
      	return false;
      }
      
      void ClearStack(PtrStack ptrStack)
      {
      	if (IsEmptyStack(ptrStack))
      		return;
      
      	PtrNode ptrNoteCur = ptrStack->ptrTop;
      	PtrNode ptrNoteNext = NULL;
      
      	while (ptrStack->ptrBottom != ptrNoteCur)
      	{
      		ptrNoteNext = ptrNoteCur->ptrNext;
      		free(ptrNoteCur);//釋放內存
      		ptrNoteCur = ptrNoteNext;
      	}
      
      	ptrStack->ptrTop = ptrStack->ptrBottom;
      }

       

      posted @ 2025-09-23 23:28  EricsT  閱讀(16)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一本久道久久综合中文字幕 | 亚洲精品~无码抽插| 亚洲V天堂V手机在线| 国产av亚洲一区二区| 98精品全国免费观看视频| 自拍视频亚洲精品在线| 久久午夜色播影院| 性色欲情网站iwww九文堂| 亚洲中文字幕精品无人区| 中国女人和老外的毛片| 激情97综合亚洲色婷婷五| 日韩精品有码中文字幕| 少妇又爽又刺激视频| 精品综合一区二区三区四区| 毛片大全真人在线| 亚洲成人av在线综合| 国产精品久久久福利| 一区二区三区四区精品视频| 国产欧美日韩亚洲一区二区三区| 久久综合伊人| 日本亚洲欧洲免费无线码| 无码精品人妻一区二区三区中| 久久免费看少妇免费观看| 人妻少妇久久中文字幕| 中文字幕无码不卡在线| 日韩午夜一区二区福利视频| 五月天中文字幕mv在线| 国产精品成人网址在线观看| 老妇xxxxx性开放| 丁香花在线观看免费观看图片 | 大新县| 精品久久久无码中文字幕| 欧美一区二区三区欧美日韩亚洲| 欧美在线观看www| 少妇又爽又刺激视频| 熟女系列丰满熟妇AV| 蜜桃一区二区三区在线看| 日韩区二区三区中文字幕| 成人午夜免费无码视频在线观看 | 国产精品人妇一区二区三区| 国产三级无码内射在线看|