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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

栈的C语言实现

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 栈的C语言实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個棧的C語言實現,函數聲明放在 line_list.h 頭文件匯總,函數定義放在line_list.c 中,main.c 用來測試各個函數.

1.文件 stack.h

// stack.h#ifndef __STACK_H__ #define __STACK_H__typedef int DataType; typedef struct node{DataType data;struct node * next; }Stack;Stack* CreateStack(); //創建棧 void StackEmpty(Stack* ); //清空棧 void DestoryStack(Stack*); //撤銷(刪除)棧 int IsEmpty(Stack*); //判空 int PushStack(Stack*, DataType); //入棧 int PopStack(Stack*); //出棧 DataType GetTopElement(Stack*); //取棧頂元素#endif
  • 文件 stack.c
  • // stack.c/*一個基于鏈表實現的棧的簡單例子,沒有做逆向增長,固定長度等限制。此外,利用數組等也可實現棧。僅用來演示棧先進后出的原理。第一個元素存儲在 stack->next 中*/#include <stdio.h> #include <stdlib.h> #include "stack.h"//創建棧,此時棧中沒有任何元素 Stack* CreateStack() {Stack *stack = (Stack*)malloc(sizeof(Stack));if(NULL != stack){stack->next = NULL;return stack;}printf("out of place.\n");return NULL; }//清空棧 void StackEmpty(Stack* stack) {while(!IsEmpty(stack)){PopStack(stack);}printf("now stack is empty. \n"); }//撤銷棧 void DestoryStack(Stack* stack) {free(stack);printf("now stack is destoryed. \n");exit(0); }int IsEmpty(Stack* stack) {return (stack->next == 0); }//入棧,成功返回1,失敗返回0, 把元素 data 存入 棧 stack 中 int PushStack(Stack* stack, DataType data) {Stack* newst = (Stack*)malloc(sizeof(Stack));if(NULL != newst){newst->data = data;newst->next = stack->next; //s->next = NULL;stack->next = newst;return 1;}printf("out of place PushStack.\n");return 0; }/*出棧,成功返回1,失敗返回0,出棧不取出元素值,只是刪除棧頂元素。如出棧要實現,取出元素值,并釋放空間,可結合取棧頂元素函數做修改,這里不再給出。*/int PopStack(Stack* stack) {Stack* tmpst;if(!IsEmpty(stack)){tmpst = stack->next;stack->next = tmpst->next;free(tmpst);return 1;}return 0; }//取棧頂元素,僅取出棧頂元素的值,取出之后,該元素,任然存在棧中。成功返回元素值,失敗輸出提示信息,并返回 -1 DataType GetTopElement(Stack* stack) {if(!IsEmpty(stack)){return stack->next->data;}printf("stack is empty GetTopElement.\n");return -1; }
  • 文件main.c
  • // main.c#include <stdio.h> #include "stack.h"int main() {//測試創建棧函數Stack* stack = CreateStack();printf("StackTopElement = %d \n",GetTopElement(stack));//測試入棧函數PushStack(stack,5); printf("StackTopElement = %d \n",GetTopElement(stack));PushStack(stack,6);printf("StackTopElement = %d \n",GetTopElement(stack));PushStack(stack,7);printf("StackTopElement = %d \n",GetTopElement(stack));//測試出棧函數PopStack(stack);printf("StackTopElement = %d \n",GetTopElement(stack));PopStack(stack);printf("StackTopElement = %d \n",GetTopElement(stack));//測試清空棧函數StackEmpty(stack);printf("StackTopElement = %d \n",GetTopElement(stack));//測試撤銷棧函數DestoryStack(stack);return 0; }

    轉載于:https://www.cnblogs.com/ay-a/p/9757903.html

    總結

    以上是生活随笔為你收集整理的栈的C语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。