定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)
来源:互联网 发布:java encode 转码 编辑:程序博客网 时间:2024/04/29 09:28
具体实现代码如下:
stack.h内容如下:
#ifndef _STACK_H_#define _STACK_H_#define NUM 256typedef struct _tagStack{int m_Array[NUM];int m_nTop;}Stack;void InitStack(Stack * pStack);int Push(Stack * pStack, int nNum);int Pop(Stack * pStack);int IsEmtpy(Stack * pStack);int Top(Stack * pStack);void PrintStack(Stack * pStack);int GetMin(Stack * pStack);#endifstack.cpp的内容如下:
#include <stdlib.h>#include <stdio.h>#include <string.h>#include "stack.h"Stack TempStack = { 0 };int nMinIndex = -1;void InitStack(Stack * pStack){if (!pStack)return;memset(pStack->m_Array, 0, NUM);pStack->m_nTop = -1;memset(TempStack.m_Array, 0, NUM);TempStack.m_nTop = -1;return;}int Push(Stack * pStack, int nNum){if (!pStack)return 0;if (pStack->m_nTop + 1 >= NUM)return 0;if (nMinIndex == -1){nMinIndex = 0;TempStack.m_nTop++;TempStack.m_Array[TempStack.m_nTop] = nMinIndex;}else{if (nNum < pStack->m_Array[nMinIndex]){nMinIndex = pStack->m_nTop + 1;}TempStack.m_nTop++;TempStack.m_Array[TempStack.m_nTop] = nMinIndex;}pStack->m_nTop++;pStack->m_Array[pStack->m_nTop] = nNum;return 1;}int Pop(Stack * pStack){int nRet = 0;if (!pStack)return 0;if (pStack->m_nTop < 0)return 0;nRet = pStack->m_Array[pStack->m_nTop--];TempStack.m_nTop--;return 1;}int IsEmtpy(Stack * pStack){if (!pStack)return -1;if (pStack->m_nTop == -1)return 1;return 0;}int Top(Stack * pStack){if (!pStack)return 0;if (pStack->m_nTop < 0)return 0;return pStack->m_Array[pStack->m_nTop];}void PrintStack(Stack * pStack){int i = 0;if (!pStack)return;printf("栈元素:\n");for (i = 0; i <= pStack->m_nTop; i++){printf("%d", pStack->m_Array[i]);}printf("\n");return;}int GetMin(Stack * pStack){if (!pStack)return 0;if (TempStack.m_nTop >= 0){if (pStack->m_nTop == TempStack.m_nTop){return pStack->m_Array[TempStack.m_Array[TempStack.m_nTop]];}}return -1;}main.cpp的内容如下:
#include <stdlib.h>#include <stdio.h>#include "stack.h"void main(){Stack MyStack;InitStack(&MyStack);Push(&MyStack, 3);Push(&MyStack, 4);Push(&MyStack, 5);Push(&MyStack, 2);Push(&MyStack, 1);PrintStack(&MyStack);printf("最小值:\n");while (IsEmtpy(&MyStack) != 1){printf("%d\n", GetMin(&MyStack));Pop(&MyStack);}system("pause");return;}运行效果如图1所示:
图1 运行效果
0 0
- 定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)
- 定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)
- 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。
- 定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素。要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。
- 定义栈的数据结构, 要求添加一个 min 函数, 能够得到栈的最小元素。 要求函数 min、 push 以及 pop 的时间复杂度都是 O(1)
- 实现一个栈,要求Push/Pop/Min(返回最小值)的时间复杂度为O(1)
- 构造栈的数据结构,要求实现min函数,通过min函数取得栈中的最小值。要求PUSH, POP, MIN的时间复杂度为O(1)
- 面试题:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素,要求函数min,push及pop的时间复杂度都是O(1)
- 实现一个栈Stack,要求实现Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。o(1)空间的代码实现
- 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素
- 定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素
- 实现一个栈,要求push,pop,Min的操作时间复杂度为O(1)
- 定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);找出字符串中的最长子串,要求子串不含重复字符,时间复杂度是O(n);
- 定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);找出字符串中的最长子串,要求子串不含重复字符,时间复杂度是O(n);
- 设计一个带MIN的栈,要求出栈,入栈,返回最小值的时间复杂度为O(1)
- 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。时间复杂度都是O(1)
- ACM整理(六)——1003:A+B
- 最近的心情写照
- 新型文胸遇爱人自动脱落
- Java程序员应该知道的10个eclipse调试技巧
- [GEiv]部署及Hello World
- 定义一个栈的数据结构,要求实现一个min函数,每次能够得到栈的最小值,并且要求Min的时间复杂度为O(1)
- 【C++】预编译命令
- java中byte转换int时为何与0xff进行与运算
- Sicily1050(DFS)
- 3Sum Closest[leetcode]
- Tomcat服务器的安装以及安装的常见问题和Tomcat的配置
- 男子上厕所玩手机变成植物人
- Java 并发编程之测试
- kafka分布式消息队列----安装篇