9、了解栈概念,自己编写一个类实现栈的基本功能(入栈,出栈,求栈的大小等其他基本功能)。
#include<iostream>
#include<math.h>
#include<string>
#include<algorithm>
using namespace std;
struct Node
{
int date;
struct Node* next;
};
struct stack {//栈的建立
int size;
struct Node* stackTop;
};
struct Node* createNode(int date){//创建栈的节点,malloc动态分配一个内存
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->next = NULL;
newNode->date = date;
return newNode;
}
struct stack *createstack()//标记栈顶以及栈的存储数
{
struct stack *signstack = (struct stack *)malloc(sizeof(struct stack));
signstack->size = 0;
signstack->stackTop = NULL;
return signstack;
}
void push(struct stack* signstack, int date)//建一层栈
{
struct Node *newnode;
newnode = createNode(date);
newnode->next = signstack->stackTop;
signstack->stackTop = newnode;
signstack->size++;
}
int getTop(struct stack* signstack){//获取栈顶元素
if(signstack->size==0){
cout << "栈为空!无法获取目标元素"<<endl;
return 0;
}else {
return signstack->stackTop->date;
}
}
void pop(struct stack* signstack){//出栈操作
if(signstack->size==0){
cout << "栈为空!无法出栈"<<endl;
}else {
struct Node *nextNode = signstack->stackTop->next;
free(signstack->stackTop);
signstack->stackTop = nextNode;
signstack->size--;
}
}
int empty(struct stack* signstack){//判断栈是否为空
if(signstack->size==0){
return 0;//空栈
}
return 1;//非空栈
}
int main(){
struct stack *signstack = createstack();
int a=0;
int n;
cin >> n;
for (int i = 1; i <= n;i++){
cin >> a;
push(signstack, a);
}
while (empty(signstack))
{
cout << getTop(signstack) << "\t";
pop(signstack);
}
cout << endl;
return 0;
}

博客主要讲述了要了解栈概念,并用C++编写类实现栈的基本功能,如入栈、出栈、求栈大小等。还提到建立了单纯的数据栈,但在使用string输入字符串时遇到问题,有待进一步查看。
485

被折叠的 条评论
为什么被折叠?



