面试题
编程实现下面的栈顶操作:
class MyData
{void push(data);void pop(&data);bool isEmpty();
};
解析:显然这里需要实现栈的3种基本操作,即进栈、出栈以及判空。为了方便起见,使用单链表结构实现栈并且使用类的形式来定义站内及其节点。首先是节点类和栈类的具体定义,程序代码如下:
#include <iostream>
using namespace std;class MyData
{
public:MyData() : data(0), next(NULL){} //默认构造函数MyData(int value) : data(value), next(NULL){} //带参数的构造函数int data; //数据域MyData *next; //下一个节点
};class MyStack
{
public:MyStack() : top(NULL) {} //默认构造函数void push(MyData data); //进栈void pop(MyData *pData); //出栈bool IsEmpty(); //是否为空MyData *top; //栈顶
};
由于不能直接操作栈底,因此这里没有定义栈底的指针。在MyStack的默
面试题
编程实现下面的栈顶操作:
class MyData
{void push(data);void pop(&data);bool isEmpty();
};
解析:显然这里需要实现栈的3种基本操作,即进栈、出栈以及判空。为了方便起见,使用单链表结构实现栈并且使用类的形式来定义站内及其节点。首先是节点类和栈类的具体定义,程序代码如下:
#include <iostream>
using namespace std;class MyData
{
public:MyData() : data(0), next(NULL){} //默认构造函数MyData(int value) : data(value), next(NULL){} //带参数的构造函数int data; //数据域MyData *next; //下一个节点
};class MyStack
{
public:MyStack() : top(NULL) {} //默认构造函数void push(MyData data); //进栈void pop(MyData *pData); //出栈bool IsEmpty(); //是否为空MyData *top; //栈顶
};
由于不能直接操作栈底,因此这里没有定义栈底的指针。在MyStack的默