链栈

#pragma once
#ifndef _LINKSTACK_
#define _LINKSTACK_

#include<iostream>
using namespace std;
typedef int DataType;

//链栈结构信息
 struct node {
	DataType info;
	struct  node *link;
};
 typedef struct node stackNode;
 typedef struct node *PNode;
typedef struct LinkStack { //链接栈类型定义
	PNode top; //指向栈顶指针
}LinkStackNode, *PLinkStack;

//创建空链接栈
PLinkStack createEmptyStack_link() {
	PLinkStack plstack = new LinkStackNode;
	if (plstack != NULL) plstack->top = NULL;
	else cout << "Out of space!" << endl;

	return plstack;

}

//判断是否为空栈
int isEmptyStack_link(PLinkStack plstack) {
	return (plstack->top == NULL);
}

//进栈
void push_link(PLinkStack plstack, DataType x) {
	PNode p = new stackNode;
	if (p != NULL) {
		p->info = x;
		p->link = plstack->top;
		plstack->top = p;
	}
	else {
		cout << "Out of space!" <<endl;
	}
}

//出栈
void pop_link(PLinkStack plstack) {

	PNode p;
	if (isEmptyStack_link(plstack))cout << "Empty Stack" << endl;
	else {
		p = plstack->top;
		plstack->top = plstack->top->link;
		free(p);
	}
}

//栈顶元素
DataType top_link(PLinkStack plstack) {
	
	if (isEmptyStack_link(plstack))cout << "Stack is empty!" << endl;
	else {
		return (plstack->top->info);
	}
}
#endif // !_LINKSTACK_

posted @ 2022-05-10 23:18  iforeverhz  阅读(73)  评论(0)    收藏  举报