本文详细介绍了使用C++实现栈的基本操作,包括初始化、压栈、打印栈内容及释放内存。通过具体代码实例,展示了如何操作单链表实现栈的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// Stack.cpp : 定义控制台应用程序的入口点。
//stack 类似于:list 单链表,对栈操作,类似于操作一个单身的链表

#include "stdafx.h"
#include <stdlib.h>


struct stack
{
	int	data;
	int size;
	struct stack *next;
};

stack *stack_init()
{
	stack	*head;
	head = (stack*)malloc(sizeof(stack));
	head->size = 0;
	head->next = NULL;
	return head;
}

int *stack_push(stack *list,int data)
{
	stack *temp;
	stack *pushstack;

	temp = list;

	if(list->size == 0)
	{
		list->data = data;
		list->next = NULL;
	}
	else
	{
		while(temp->next != NULL)
		temp = temp->next;

		pushstack = (stack *)malloc(sizeof(stack));

		pushstack->data = data;
		pushstack->next = NULL;
		pushstack->size = list->size;

		temp->next = pushstack;
	}

	
	list->size = list->size + 1;
	return 0;
}

void print_stack(stack *list)
{
	stack *temp;
	temp = list;

	while(list->size != 0)
	{
		printf("stack->data = %d\tsize = %d\n",temp->data,temp->size);
		temp = temp->next;
		list->size = list->size - 1;
	}
}

void free_stack(stack *list)
{
	stack *temp;

	while(list != NULL)
	{
		temp = list;
		list = list->next;
		free(temp);
	}
}


int _tmain(int argc, _TCHAR* argv[])
{
	stack *list;
	list == NULL;

	list = stack_init();
	
	stack_push(list,1);
	stack_push(list,2);

	print_stack(list);

	free_stack(list);

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值