//利用链表构建栈。
//输入1 2 3 4 5 0时输出 5 4 3 2 1
#include<stdio.h>
#include<stdlib.h>
#define true 1
#define false 0
typedef struct node{ //建立结构体
int num;
struct node *next;
}Node;
int push(Node **head, int num) //将一个数字压入以head为头的堆栈
{
Node *nextNode;
if(NULL==(nextNode=(struct node *)malloc(sizeof(struct node )))){
return false;
}
nextNode->num = num;
if(NULL == *head){
nextNode->next = NULL;
*head = nextNode;
return true;
}
nextNode->next = *head;//尾插法
*head = nextNode;
return true;
}
int pop(Node **head,int *num) //出栈
{
Node *temp;
if(NULL == *head)return false;
*num = (*head)->num;
temp = (*head)->next;
free(*head);
*head = temp;
return true;
}
int main(int argc, char* argv[]) //主函数
{
int n=0,num;
Node *head;
head=NULL;
printf("Please input numbers end with 0 :\n");
while(1){ //如果不是0,压栈
scanf("%d",&num);
if(0 == num)break;
push(&head,num);
n++;
}
while(pop(&head,&num)){ //出栈输出
printf("%d ", num);
}
printf("\nTotal : %d\n",n);
}
分享到:
相关推荐
python利用数组和链表实现栈和队列 数组和链表.pdf
熟悉链表的构建与使用,利用链表实现栈 利用栈求解汉诺塔问题 问题描述 汉诺塔问题: 现有三个塔座,在塔1上叠有64个碟子,所有碟子按从大到小的次序从塔底堆放至塔顶。在塔1旁边还有另外两个塔座(塔2和塔3)。 ...
利用C语言,链表,实现的一个简单的入栈出栈的小例子。
1:学习栈的原理; 2:熟悉链表的构建与使用,利用链表实现栈; 3:利用栈求解汉诺塔问题; (里面都有文档的详细讲解)
借助栈的使用来逆置单链表,通过链表元素的进栈与出栈就能完成了。
数据结构各种算法实现,有示例程序。 包括顺序表 单链表 双向链表 循环链表 顺序栈 链式栈 顺序队列 链式队列 串 二叉树 线索二叉树 堆 哈夫曼树 B+树 图 排序算法
利用一个链表类实现一个队列类和栈类
数据结构的定义 数据结构是计算机存储、组织数据的方式,用于高效地访问和修改数据。...Java提供了丰富的数据结构库,包括数组、链表、栈、队列等,这些数据结构为程序员提供了处理各种问题的工具和方法。
C++ 长整形加减法 用到了 栈和链表等技术 解决了长整形溢出的问题
利用Linux GNU make C 项目管理软件工具实现数据结构栈(Stack)。实现Push,Pop,Delete,Search,Visit through,Clear功能。节点的数据设计具有一般性(使用void *data),使用链表栈实现本功能,且栈的Top指针作为每...
我们经常会遇到这样的问题:利用一个链表类实现一个队列类和栈类,这个无论是在学生时代还是已经步入社会已经是个合格的程序员也会遇到同样的问题,值得收藏和温习一下
1、输入字符序列,建立二叉链表。 2、利用栈,编写非递归算法,编程实现二叉树的中序遍历。 3、求二叉树的叶子结点个数。 4、在主函数中设计一个简单的菜单,分别调试上述算法。
1.输入的形式和输入值的范围:在所有输入中,学生的姓名和学号都是字符串,成绩是整数。 2.输出的形式:建立顺序表后显示顺序表的内容,也可以随时手动查询...3.程序所能达到的功能:完成栈的建立、输入,输出,逆置。
在VC++6.0下,使用双向链表方式表示栈,利用栈求表达式的值,其中表达式包括+、-、*、/、(、)和数字等。
实例079 利用TStringGrid实现表单式批量录入数据 96 实例080 在TStringGrid中实现单元格下拉列表 98 实例081 在TStringGrid组件中绘图 99 实例082 TStringGrid组件上回车移动焦点 100 实例083 在...
主要为大家详细介绍了C++利用链表模板类实现一个简易队列,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
利用C++实现以下经典数据结构与算法:线性表(顺序表、链表、静态链表、三元组)、栈(双栈、共享栈)、队列(任务调度、循环队列、双向队列、链队列)、数组(特殊矩阵、稀疏矩阵压缩)、串(朴素模式匹配、KMP算法...
用C++写的链表、队列、栈、二叉树模板类,二叉树部分功能可,代码文件未上传完,不要下载。抱歉。。。
本文实例为大家分享了C语言利用模板实现简单的栈类(数组和单链表),供大家参考,具体内容如下 主要的功能是实现一个后进先出的列表,有入栈、出栈、返回大小、判空等基本功能 #pragma once using namespace std;...
使用链表和堆栈,通过将结构体指针作为堆栈数据,简单明了的实现后缀式转前缀式