栈的C语言实现(链表)

来源:互联网 发布:mac 终端显示路径 编辑:程序博客网 时间:2024/04/18 18:54
//栈的C语言实现(链表) #include <stdio.h>#include <stdlib.h>/* run this program using the console pauser or add your own getch, system("pause") or input loop */typedef struct _NODE_{struct _NODE_ *next;int data;}NODE;typedef struct _STACK{NODE *top;}STACK;//创建一个空栈 STACK *Create(){STACK *stack;stack=(STACK*)malloc(sizeof(STACK)); if(stack==NULL){printf("创建失败!");exit(-1);} else{stack->top=NULL;return stack;}}//入栈,单链表的顶端来实现插入 ,链表的顶端做为栈顶 STACK *Push(STACK *stack,int element){if(stack==NULL){printf("需要先创建stack!");exit(-1);}NODE *node;node=(NODE*)malloc(sizeof(NODE));node->data=element;node->next=stack->top;stack->top=node;return stack;} //打印栈 void Printf(STACK *stack){NODE *node; if(stack->top==NULL){printf("空栈!");exit(-1); }else{node=stack->top;do{printf(" %d ",node->data);node=node->next;}while(node!=NULL);}printf("\n");}//出栈 STACK *Pop(STACK *stack){int x;NODE *node;if(stack==NULL||stack->top==NULL){printf("空栈!");}else{if(stack->top->next==NULL){x=stack->top->data;node=stack->top;stack->top=NULL;}else{node=stack->top;stack->top=node->next;free(node);}return stack;}}int main(int argc, char *argv[]) {STACK *stack=Create();stack=Push(stack,1);stack=Push(stack,2);stack=Push(stack,3);stack=Push(stack,4);stack=Push(stack,5);Printf(stack);stack=Pop(stack);Printf(stack);return 0;}

0 0
原创粉丝点击