链栈的输入和删除(压栈和出栈)
2016-12-22 00:00
141 查看
#include<stdio.h> #include<stdlib.h> typedef struct node { int data; struct node *next; }*PLinkStackNode,LinkStackNode; //初始化 PLinkStackNode init(PLinkStackNode *L) { *L = (PLinkStackNode)malloc(sizeof(LinkStackNode)); (*L)->next = NULL; return *L; } //和单链表的头插法类似 int Push(PLinkStackNode L,int x) /*将数据元素x压入到栈L中*/ { //链表的表头指针就作为栈顶指针,其始终指向当前栈顶元素前面的头结点 PLinkStackNode temp; temp = (PLinkStackNode)malloc(sizeof(LinkStackNode)); //新的结点的值 if(temp == NULL) { return 0;//申请空间失败 } temp->data = x; temp->next = L->next; //修改当前的栈顶指针 L->next = temp; return 1; } //和单链表的删除相似 int Pop(PLinkStackNode L,int *x) { PLinkStackNode temp; temp = L->next; if(temp==NULL) return 0;//栈为空 *x = temp->data; L->next = temp->next; free(temp); return 1; } int main() { int a[6] = {1,2,3,4,5,6}; int i; int x; PLinkStackNode Ls; Ls = init(&Ls);//初始化 for(i = 0;i < 6;i++) { Push(Ls,a[i]); } printf("将栈的元素输出:\n"); for(i = 0;i < 6;i++) { Pop(Ls,&x); printf("%d ",x); } printf("\n "); return 0; }
相关文章推荐
- 基于mongodb的地理检索实现
- iOS FMDB 的二次封装
- 第一个博客
- linear-gradient用法
- 线性回归(2)缩减系数理解
- SQL Server 获得唯一编号的方法
- ueditor富文本编辑器字数限制
- mysql 5.7 修改初始密码
- 抓取h5 audio 结束行为
- bubble_sort
- Simple Factory
- Jfinal 通用JSON返回对象设计
- Homestead虚拟机中执行npm install后npm ERR! 解决方案
- Redo log总结
- (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行
- SpringBoot15 之 Servlet
- SpringBoot16 之 Listener and Filter
- 消费kafka0.10简单实例
- 关系型数据库的几种设计范式(1NF 2NF 3NF BCNF 4NF 5NF)
- 被风吹过的夏天,与往事和解。