博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Stack,一个后进先出的集合容器
阅读量:2004 次
发布时间:2019-04-28

本文共 1329 字,大约阅读时间需要 4 分钟。

今天刷LC的每日一题时,需要使用到“栈”这种数据结构。就顺便复习了有关“栈”的知识。

本文就用C来复习~~(预习)~~“Stack”。

特点

Stack,本身就具有数据结构中栈的一般特性:后进先出

定义Stack

#include
stack
name;

栈中元素的访问

  • top()
  • 只能访问其栈顶元素
  • 通过top()来获取(或遍历)

常用的调用函数

  • push():入栈
  • pop():出栈(弹出栈顶元素)
  • top:获取栈顶元素
  • empty():判空,返回值是Bool类型,true为空,false为非空
  • size():返回stack内元素的个数

DEMO

#include 
#include
typedef struct node { int data; struct node *next;}Node ,*PNode; typedef struct stack { PNode pTop; PNode pBot;}Stack, *PStack; void init(PStack pS){ pS->pTop = pS->pBot = (PNode)malloc(sizeof(Node)); pS->pBot->next = NULL;} void push(PStack pS, int val){ PNode pNew = (PNode)malloc(sizeof(Node)); pNew->data = val; pNew->next = pS->pTop; pS->pTop = pNew;} void traverse(PStack pS){ PNode p = pS->pTop; while (p != pS->pBot) { printf("%d ", p->data); p = p->next; } printf("\n");} void pop(PStack pS){ if (pS->pTop != NULL) { if (pS->pTop == pS->pBot) { printf("已到栈底\n"); return; } PNode p = pS->pTop; pS->pTop = p->next; free(p); p = NULL; }} void clean(PStack pS){ PNode q = NULL; while (pS->pTop != pS->pBot){ q = pS->pTop->next; free(pS->pTop); pS->pTop = q; }} int main(void){ Stack s; init(&s); push(&s, 5); push(&s, 4); push(&s, 3); push(&s, 2); push(&s, 1); traverse(&s); pop(&s); traverse(&s); clean(&s); pop(&s); traverse(&s); system("pause"); return 0;}

相关文章

转载地址:http://blatf.baihongyu.com/

你可能感兴趣的文章
x265-1.7版本-common/scalinglist.cpp注释
查看>>
x265-1.7版本-common/slice.cpp注释
查看>>
x265-1.7版本-common/slice.h注释
查看>>
x265-1.7版本-encoder/bitcost.h注释
查看>>
x265-1.7版本-encoder/dpb.cpp注释
查看>>
x265-1.7版本-encoder/dpb.h注释
查看>>
x265-1.7版本-encoder/encoder.cpp注释
查看>>
x265-1.7版本-encoder/encoder.h注释
查看>>
x265-1.7版本-encoder/frameencoder.cpp注释
查看>>
x265-1.7版本-encoder/frameencoder.h注释
查看>>
x265-1.7版本-encoder/motion.cpp注释
查看>>
高阶函数
查看>>
继承和多态
查看>>
获取对象信息
查看>>
实例属性和类属性
查看>>
使用__slots__
查看>>
使用@property
查看>>
多重继承
查看>>
定制类
查看>>
使用枚举类
查看>>