#include <stdio.h> #include <malloc.h> #include <stdlib.h> // 链表栈 typedef struct Node { int data; // 数据域 struct Node *pNext; // 指针域 }NODE, *PNODE; typedef struct Stack { PNODE pTop; PNODE pBottom; }STACK, *PSTACK; void init(PSTACK); void push(PSTACK, int); void traverse(PSTACK); int main(void) { STACK S; // STACK等价于struct Stack init(&S); // 压栈 push(&S, 1); // 把1放进去 push(&S, 2); // 把2放进去 // 遍历输出 traverse(&S); return 0; } void init(PSTACK pS) { pS->pTop = (PNODE)malloc(sizeof(NODE)); if(pS->pTop == NULL) { printf("动态内存分配失败!\n"); exit(-1); } else { pS->pBottom = pS->pTop; pS->pTop->pNext = NULL; } } void push(PSTACK pS, int val) { // 创造一个新的结点 PNODE pNew = (PNODE)malloc(sizeof(NODE)); pNew->data = val; pNew->pNext = pS->pTop; pS->pTop = pNew; return; }
原文:http://www.cnblogs.com/lqcdsns/p/6696965.html