C语言数据结构-栈-链表实现
2017-07-29 21:22
585 查看
栈头文件:
栈代码实现:
#ifndef LINKSTACK_H_INCLUDED #define LINKSTACK_H_INCLUDED typedef struct Node{ int data; struct Node *next; }Node, *PNode; typedef struct LinkStack{ PNode top; }LinkStack, *PLinkStack; PLinkStack init(void); int push(int data,PLinkStack pStack); int pop(PLinkStack pStack,int *data); int getTop(PLinkStack pStack,int *data); void printStack(PLinkStack pStack); #endif // LINKSTACK_H_INCLUDED
栈代码实现:
#include <stdio.h> #include <stdlib.h> #include "LinkStack.h" PLinkStack init(void){ PLinkStack pStack=(PLinkStack)malloc(sizeof(struct LinkStack)); pStack->top=NULL; } //链表结构: null<-p1<-p2, 是从右到左的顺序 int push(int data,PLinkStack pStack){ PNode pNode=(PNode)malloc(sizeof(struct Node)); pNode->data=data; pNode->next=pStack->top; pStack->top=pNode; } int pop(PLinkStack pStack,int *data){ PNode tNode=pStack->top; if(tNode==NULL){ return 0; } //指针类型变量取值 *data=tNode->data; pStack->top=tNode->next; free(tNode); return 1; } int getTop(PLinkStack pStack,int *data){ PNode tNode=pStack->top; if(tNode==NULL){ return 0; } *data=tNode->data; return 1; } void printStack(PLinkStack pStack){ PNode tNode=pStack->top; while(tNode!=NULL){ printf("Node:%d->",tNode->data); tNode=tNode->next; } printf("\n"); } int main() { PLinkStack linkStack=init(); push(1,linkStack); push(2,linkStack); push(3,linkStack); int data; pop(linkStack,&data); printf("pop top data=%d\n",data); int top; getTop(linkStack,&top); printf("current top data=%d\n",top); printStack(linkStack); return 0; }
相关文章推荐
- 【数据结构】链表及相关操作(C语言实现)
- C语言数据结构实现链表去重的实例
- 【数据结构】C语言实现双向链表(带头尾指针,非循环链表)
- 采用c语言数据结构实现链表和stl 分别实现链表
- 数据结构中单链表的实现+单链表的C语言实现源代码
- 【数据结构】C语言实现无头节点单链表
- C语言数据结构之单向链表(已经调试可以实现相应的功能了,可是还是有几个问题现在还是不大理解,希望大家能够一起探讨)
- 【数据结构】C语言实现链表节点的插入和删除
- c语言实现数据结构中的链表源代码
- 【数据结构】C语言实现链表
- 数据结构:单向链表的C语言实现
- 数据结构之链表c语言实现
- C语言实现数据结构中的循环链表
- 重温数据结构之链表二——C语言实现
- 数据结构--单链表的基本操作(C语言实现)
- 算法与数据结构-单向链表的基本操作C语言实现
- 【数据结构】c语言链表实现报数问题
- 数据结构(二)——链表(C语言实现)
- 数据结构学习系列一--链表的建立(c语言实现)
- 数据结构与C语言实现(一)——链表及两个实例