数据结构——c栈实现
栈,后进先出
#include<stdlib.h> typedef struct _stack{ int data; struct _stack *next; } *stack, SNode; // 使用单链表来实现栈 // 栈指针指向链表第一个结点,所有的添加/删除/访问只对链表的第一个结点进行操作 void initStack(stack *s) { *s = NULL; } // 只要可能修改栈指针,都用二级指针 void push(stack *s, int val) { stack temp = (stack)malloc(sizeof(SNode)); stack t = *s; if(t == NULL) { temp->data = val; temp->next = NULL; *s = temp; // 把栈顶指针指向第一个结点 return; } // 新结点设置值并指向旧栈顶结点 temp->data = val; temp->next = t; *s = temp; // 栈顶指针指向新结点 } // 出栈,移除栈顶元素 void pop(stack *s) { stack t = *s; if(t == NULL) return; // t指向栈第二结点 t = t->next; //释放栈顶结点 free(*s); //重新设置栈顶结点 *s = t; } int getTop(stack *s) { stack t = *s; if(t == NULL) return -1; // 返回栈顶的值 return t->data; }
运行结果
$ ./stack 7 7 6 5
一干解千愁

浙公网安备 33010602011771号