鏈棧的基本操作實現代碼如下:
#include<iostream>
using namespace std;
#define TRUE 1
#define FALSE 0
//鏈棧的結構
typedef struct node
{
int data;
struct node *next;
}LinkStackNode;
typedef LinkStackNode *LinkStack;
//鏈棧進棧
int Push(LinkStack top, int x)//將數據元素x壓入棧top中
{
LinkStackNode *temp;
temp = (LinkStackNode *)malloc(sizeof(LinkStackNode));
if (temp==NULL)//申請空間失敗
{
return FALSE;
}
temp->data= x;
temp->next = top->next;
top->next = temp;//修改當前棧頂指針
return TRUE;
}
//鏈棧出棧
int Pop(LinkStack top, int *x)//將棧top的棧頂元素彈出,放到x所指的存儲空間中
{
LinkStackNode *temp;
temp = top->next;
if (temp == NULL)//棧爲空
{
return FALSE;
}
top->next = temp->next;
*x=temp->data ;
free(temp);//釋放存儲空間
return TRUE;
}