數據結構之棧和隊列(三)

棧其實是特殊的線性表,其特點是後進先出,順序存儲結果的棧暫時不提,下面是關於鏈棧的部分代碼

1.頭文件stack.h

typedef int ElemType;

//定義一個棧結點
typedef struct Node
{
	ElemType data;
	struct Node *next;
}StackNode,*LinkStackPtr;

//定義一個棧頂結點
typedef struct TopNode
{
	LinkStackPtr top;//棧頂元素
	int count;//棧元素的個數
}LinkStack;

//創建一個空棧
bool CreateStack(LinkStack &S);
//壓棧
bool Push(LinkStack &S,ElemType e);
//出棧
bool Pop(LinkStack &S);
//打印棧
bool print(LinkStack S);

2.函數實現stack.cpp

#include <iostream>
#include "stack.h"

bool CreateStack(LinkStack &S)
{
	S.top=NULL;
	S.count=0;
	return true;
}

bool Push(LinkStack &S,ElemType e)
{
	LinkStackPtr temp=(LinkStackPtr)malloc(sizeof(StackNode));
	temp->data=e;
	temp->next=S.top;
	S.top=temp;
	S.count++;
	return true;
}

bool Pop(LinkStack &S)
{
	LinkStackPtr temp;
	temp=S.top;
	S.top=temp->next;
	S.count--;
	free(temp);
	return true;
}

bool print(LinkStack S)
{
	LinkStackPtr temp;
	temp=S.top;
	while(S.count--)
	{
		printf("%d\n",temp->data);
		temp=temp->next;
	}
	printf("--------------分割線---------------------\n");
	return true;
}

3.主函數main.cpp

#include <iostream>
#include "stack.h"

int main()
{
	LinkStack S;
	CreateStack(S);//創建一個空棧
	for(int i=1;i<=10;i++)
		Push(S,i);//壓棧操作
	print(S);//打印棧
	Pop(S);//彈棧
	print(S);//打印棧
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章