#include<iostream>
using namespace std;
const int MaxSize = 10;//确定静态链表的长度
typedef struct linknode {
int data;//栈的数据空间
struct linknode* next;//栈顶元素
}Node, *linkStack;
bool initLinkStack(linkStack&);//初始化链式栈
bool popLinkStack(linkStack);//出栈
bool printLinkStack(linkStack);//打印栈
bool pushLinkStack(linkStack);//进栈
int main()
{
linkStack L;
initLinkStack(L);
pushLinkStack(L);
printLinkStack(L);
popLinkStack(L);
printLinkStack(L);
return 0;
}
bool printLinkStack(linkStack stack) {
if (stack == nullptr)
return false;
Node* head = stack->next;
int i = 0;
while (head != nullptr) {
printf("打印第%d个结点的数据:%d\n",i++, head->data);
head = head->next;
}
return true;
}
bool pushLinkStack(linkStack stack) {
if (stack == nullptr)
return false;
Node* node = new Node;
int data;
if (node == nullptr) {
printf("结点创建失败!");
return false;
}
printf("输入结点数据:");
scanf_s("%d", &data);
node->data = data;
stack->next = node;
printf("输入结点数据:");
scanf_s("%d", &data);
node->next = nullptr;
while (data != -9999) {
Node* newNode = new Node;
if (node == nullptr) {
printf("结点创建失败!");
return false;
}
newNode->data = data;
stack->next = newNode;
newNode->next = node;
node = newNode;
int i;
printf("输入结点数据:");
scanf_s("%d", &i);
data = i;
}
return true;
}
bool popLinkStack(linkStack stack) {
int i = 0;
printf("输入需要出栈的结点个数:");
scanf_s("%d", &i);
while (i--) {
Node* temp = stack->next;
stack->next = temp->next;
delete temp;
}
return true;
}
bool initLinkStack(linkStack& stack) {
stack = new Node;
if (stack == nullptr)
return false;
stack->next = nullptr;
return true;
}
链式栈C++
最新推荐文章于 2023-12-07 02:27:47 发布