用链表实现栈

//链表实现栈需要将表尾作为栈底(botton) 表头作为栈顶(top) 头删作为出栈/弹栈(pop) 头插作为入栈/压栈(push)
/*
*  @file_name 	  : Create stack
*  @file_function : Creat a stack
*  @author        : 9Tired
*  @date 		  :2026-8-20
*  @note		  : None
*  @CopyRight(c)  :13371080204@163.com 9Tired 2026-8-20
*/

````C
typedef int DataType_t;
typedef struct Stack
{
	DataType_t data;     //节点的数据域
	struct Stack * next;//结点的指针域
}Stack_t;
//创建一个空链表,使用头节点所以需要申请头节点内存并且初始化

Stack_t * CreateStack(DataType_t data)
{
	Stack_t *NewNode = (Stack_t * )calloc(1,sizeof(struct Stack));
	if(NULL== NewNode){
	perror("Create NewNode  is failed");
	exit(-1);
	}
	NewNode->data = data;
	NewNode->next = NULL;
	return NewNode;
}
bool Stack_push(Stack_t * Head , DataType_t data) //头插
{
	Stack_t * Node =  CreateStack(data);
	if(NULL == Head){
		perror("Create Stack Head failed");
		return false;
	}
	Node->next=Head->next;
	Head->next=Node;
	return true;
}

bool Stack_pop(Stack_t * Head ) //头删除
{
	if(NULL == Head){
		perror("Create Stack Head failed");
		return false;
	}
	if(Head->next == NULL)
	{
    	return false;
	}
	Stack_t * Phead = Head->next;
	Head->next=Head->next->next;
	Phead->next = NULL;
	free(Phead);
	return true;
}

posted @ 2026-08-20 23:49  9Tired  阅读(0)  评论(0)    收藏  举报