数据结构入门学习中。。。

xiaoxiao2021-02-28  143

堆栈学习

栈特性:

LIFO简单实现可用结构中仅含top与size

数组实现:

tydef struct{ int top; int val[maxsize]; }stk; 判断是否为空 bool isEmpty(stack *stk) { return stk->top==0; } 入栈 void push(stack *stk,int x) { if(stk->top==MAXSIZE) return; stk->val[++stk->top]=x; return; } 出栈 int pop(stack *stk) { if(isEmpty(stack)) return; return stk->val[stk->top--]; }

链表实现

对于C语言而言,数组实现的弊端在于初始时不一定能确定栈的大小。链表能实现栈,但我的疑惑在于,链表本身和栈似乎并不是同一种结构(似乎在定义上是分开的?不清楚其他语言中什么情况)。但链表既可以作为FIFO,也可以做LIFO的结构。和数组在C语言中都是实现更高级数据结构的基础。= =看来还有很多东西要去思考和学习一下。(因为今天看了一些C++和Java的实现,发现stack在其他语言中是一种单独的数据结构,而不需要借助数组或链表)

基本结构 typedef struct { int top; Node* next; }Stack; 判断是否为空 return node==NULL; 入栈 void StackPush(Stack *s, int top) //入栈 { /*是否满栈检查*/ Node* tmpNode = (Node*)malloc(sizeof(*tmpNode)); tmpNode->top = top; tmpNode->next = s; s= tmpNode; } 出栈 int StackPop(Stack *s) { /*是否为空检查*/ int x=s->pop; s=s->next; return x; }

一些其他操作

用栈实现队列–再开栈–可递归或迭代查找最小元素–在线处理–每一步都操作
转载请注明原文地址: https://www.6miu.com/read-19097.html

最新回复(0)