⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lud_stack.c

📁 一个快速
💻 C
字号:
#include "LUD_Stack.h"

int StackNotEmpty(stk_stack * theStack) {
	return( theStack ? (int) theStack->top : 0);
}

stk_stack * StackJoin(stk_stack * stack1, stk_stack * stack2) {
	if (!stack1->tail) {
		free(stack1);
		return(stack2);
	} else {
		stack1->tail->next=stack2->top;
		stack1->tail=stack2->tail;
		free(stack2);
		return(stack1);
	}
}

stk_stack * StackCreate() {
	stk_stack * newStack;

	newStack=(stk_stack *) SafeMalloc(sizeof(stk_stack));
	newStack->top=newStack->tail=NULL;
	return(newStack);
}


void StackPush(stk_stack * theStack, DATA_TYPE newInfoPointer) {
	stk_stack_node * newNode;

	if(!theStack->top) {
		newNode=(stk_stack_node *) SafeMalloc(sizeof(stk_stack_node));
		newNode->info=newInfoPointer;
		newNode->next=theStack->top;
		theStack->top=newNode;
		theStack->tail=newNode;
	} else {
		newNode=(stk_stack_node *) SafeMalloc(sizeof(stk_stack_node));
		newNode->info=newInfoPointer;
		newNode->next=theStack->top;
		theStack->top=newNode;
	}

}

DATA_TYPE StackPop(stk_stack * theStack) {
	DATA_TYPE popInfo;
	stk_stack_node * oldNode;

	if(theStack->top) {
		popInfo=theStack->top->info;
		oldNode=theStack->top;
		theStack->top=theStack->top->next;
		free(oldNode);
		if (!theStack->top) theStack->tail=NULL;
	} else {
		popInfo=NULL;
	}
	return(popInfo);
}

void StackDestroy(stk_stack * theStack,void DestFunc(void * a)) {
	stk_stack_node * x=theStack->top;
	stk_stack_node * y;

	if(theStack) {
		while(x) {
			y=x->next;
			DestFunc(x->info);
			free(x);
			x=y;
		}
		free(theStack);
	}
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -