C语言中栈的两种实现方法详解

目录一、顺序栈二、链式栈总结

一、顺序栈

#include<stdio.h>#include<stdlib.h>#define maxsize 64//定义栈typedef struct{int data[maxsize];int top;}sqstack,*sqslink;//设置栈空void Clearstack(sqslink s){s->top=-1;}//判断栈空int Emptystack(sqslink s){if (s->top<0)return 1;elsereturn 0;}//进栈int Push(sqslink s, int x){if (s->top>=maxsize-1)return 0;else{s->top++;s->data[s->top]=x;return 1;}}// 出栈int Popstack(sqslink s){int n;if (Emptystack(s)>0)return NULL;else{n=s->data[s->top];s->top--;return n;}}void main(){sqslink s1;s1 =(sqslink)malloc(sizeof(sqstack));Clearstack(s1);printf("%d\n",s1->top);for(int i=0; i<=10;i++){Push(s1, i);printf("%d is pushed into stack\n",i);}printf("top is point to %d\n",s1->top);printf("\n");int n;n = Popstack(s1);printf("number %d  is poped\n",n);printf("top is point to %d\n",s1->top);}

二、链式栈

#include<stdio.h>#include<stdlib.h>typedef struct node{int data;struct node * next;}snode,*slink;struct Node{slink i;slink n;};// 清空栈void Clearstack(slink top){top=NULL;}//判断栈是否为空int Emptystack(slink top){if (top==NULL) return 1;else return 0;}// 进栈slink Push(slink top, int x){slink node = NULL;node = (slink)malloc(sizeof(snode));node->data = x;node->next = top;top = node;printf("*************************\n");printf("%d",top->data);printf("*************************\n");return top;}// 出栈struct Node Pop(slink top){slink node = NULL;struct Node result;if (Emptystack(top)){result.i=node;}else{int n;node = top;top = node->next;result.i = top;result.n = node;return result;}}void main(){slink top_ = NULL;for(int i =0; i<10;i++){top_ = Push(top_, i);printf("%d is pushed in to the stack\n",i);}int e;e = top_->data;printf("top is pointint to %d\n",e);printf("\n");printf("\n");printf("\n");slink node =NULL;printf("*************************\n");struct Node result = Pop(top_);if ((result.i)!=NULL){top_ = result.i;node = result.n;e = top_->data;printf("top is pointint to %d\n",e);int e_node;e_node = node->data;printf("the node Poped 's data is pointint to %d\n",e_node);free(node);}else{printf("stack is empty");}}

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注的更多内容!

美不美乡中水,亲不亲故乡人。

C语言中栈的两种实现方法详解

相关文章:

你感兴趣的文章:

标签云: