Stack.h 文件: //创建栈结构 typedef int STDataType; typedef struct Stack { STDataType* a; //存储数据 int top; //栈顶的位置 int capacity; //容量 }ST; 初始化栈 思想: 初始化还是相对比较简单的,学了之前的顺序表,初始化栈就很轻松了 Stack.h 文件...
栈(stack) 什么是栈 栈 栈是一种特殊的线性表,只允许在固定的一段进行插入和删除的操作 进行数据插入和删除操作的一端称为栈顶,另一端称为栈底 栈中的数据遵循后进先出LIFO的原则 Last in First Out 压栈:栈的插入操作,在栈顶 出栈:栈的删除,出数据也在栈顶。 这个结构其实就像一个弹夹,只能在一端进行...
然后每次入栈后,栈顶标记往后移动。 具体实现代码: 3.出栈操作和获取栈顶元素 注意: 出栈操作应该是将栈顶的元素删除,由于数组实现的栈无法删除,故只能吧栈顶标记往前移动,简称为一种"伪删除"。 具体实现代码: 4.判断栈是否为空 用户判断栈中是否有元素,通过栈顶标记去做即可 具体实现代码: 动态申请内存的数组...
由于栈只有一边开口存取数据,称开口的那一端为“栈顶”,封死的那一端为“栈底”(类似于盛水的木桶,从哪进去的最后还得从哪出来)。 栈的“先进后出”原则 使用栈存储数据元素,对数据元素的“存”和“取”有严格的规定:数据按一定的顺序存储到栈中,当需要调取栈中某数据元素时,需要将在该数据元素之后进栈的...
//1、本题要求实现顺序栈,写出Push 、Pop、StackEmpty函数的实现,并用一个简单的main函数测试。//已有类型定义typedef struct { ElementType Data[MaxSize];// 存储元素的数组Position Top;//栈顶指针}SeqStack;//函数接口定义:StatusPush(SeqStack &L, ElemType e); ...
5.获取栈顶元素 STDateType GetTop(ST* st){assert(st);assert(st->top); //断言return st->a[st->top - 1]; //直接返回top后一个位置的元素} 6.判断栈是否为空 bool StackEmpty(ST* st){assert(st);return st->top; //返回栈的top,如果为0则为空 非0则不为空;} ...
//获取栈顶元素STDataTypeStackTop(ST*ps){assert(ps);assert(!StackEmpty(ps));returnps->data[ps->top-1];//数组下标从0开始} 6、获取栈的长度 //获取栈的长度intStackSize(ST*ps){assert(ps);returnps->top;} 7、判断栈是否为空 //判断栈是否为空boolStackEmpty(ST*ps){assert(ps);returnps-...
一、顺序栈 "顺序栈"的类型定义 如果友友们学过顺序表,这种类型可以随便拿捏.😄😄 代码: 代码语言:javascript 复制 typedef struct stack{stacktype*data;//一个指向连续内存空间的指针int top;//记录栈顶元素的下标int capacaity;}ST; 1.1 初始化栈 ...
栈打印函数voidprintStack(Node*S){Node*node=S->next;while(node!=NULL)//循环遍历{printf("%d->",node->data);node=node->next;}printf("NULL\n");}//主函数调用其他子函数intmain(){Node*S=initStack();push(S,1);push(S,2);push(S,3);pop(S);printf("%d\n",Gettop(S));printStack(...