链栈的相关操作
2012-11-23 21:43
155 查看
/* 2012年11月23日9:10:12 链栈的基本操作 InitStack 初始化链栈 */ #include<stdio.h> #include<stdlib.h> //////////定义结构体////////////////// typedef struct Node { struct Node *pNext; int data; }NODE,*PNODE; typedef struct Stack { PNODE pTop; int count; }LinkStack,*PLinkStack; ////////////函数声明////////////////////// void InitStack(PLinkStack); void Push(int val,PLinkStack pS); void Traverse(PLinkStack pS); void Pop(PLinkStack pS); /////////////主函数/////////////////// int main(void) { LinkStack S; InitStack(&S); Push(3,&S); Push(2,&S); Push(4,&S); Push(5,&S); Traverse(&S); Pop(&S); Traverse(&S); return 0; } ///////////初始化链栈////////////////// void InitStack(PLinkStack pS) { pS->pTop = (PNODE)malloc(sizeof(NODE)); if(NULL == pS->pTop) { printf("分配内存失败\n"); exit(-1); } else { pS->pTop->pNext = NULL; pS->count = 0; } } ////////////入栈/////////////// void Push(int val,PLinkStack pS) { PNODE pNew; pNew = (PNODE)malloc(sizeof(NODE)); if(NULL == pNew) { printf("分配内存失败\n"); exit(-1); } else { pNew->data= val; pNew->pNext = pS->pTop; pS->pTop = pNew; pS->count++; } } ///////////遍历输出//////////////// void Traverse(PLinkStack pS) { PNODE pTemp = pS->pTop; if(NULL == pTemp->pNext) { printf("空栈!\n"); } else { while(NULL!=pTemp->pNext) { printf("%d\n",pTemp->data); pTemp = pTemp->pNext; } } return; } ////////////出栈//////////////////// void Pop(PLinkStack pS) { PNODE pTemp = pS->pTop; if(NULL == pTemp->pNext) { printf("空栈!\n"); } else { printf("出栈元素为%d\n",pTemp->data); pS->pTop = pS->pTop->pNext; free(pTemp); pS->count--; } }
相关文章推荐
- 顺序栈,共享栈以及链栈的相关操作
- 链栈的相关操作
- 链栈的定义及相关操作
- 数据结构_链栈的建立与相关操作_C语言源代码
- LINUX系统服务相关操作
- 目录相关操作
- 从零自学Hadoop(25):Impala相关操作下
- Domino日期操作相关
- 有关UNICODE、ANSI字符集和相关字符串操作的总结!
- 网络驱动移植之sk_buff结构体及其相关操作函数(下)
- 14.线性表之链栈的基本操作
- javascript_checkbox相关操作
- Hibernate3 相关操作
- adb 的相关操作及遇到的问题
- Linux文件的相关操作命令
- Json概述以及python对json的相关操作
- 二叉树相关操作
- Java编程之Date的相关操作
- VC++中文件读、写和其他相关操作汇总
- centos下添加管理员组和添加管理员用户及相关操作