C語言中棧的兩種實現(xiàn)方法
更新時間:2021年08月20日 09:36:33 作者:__山頂洞人__
棧的實現(xiàn)方式有兩種,一種方法是使用指針,而另一種方法則是使用數(shù)組,這篇文章主要介紹了C語言中棧的兩種實現(xiàn)方法,需要的朋友可以參考下
棧的兩種實現(xiàn)方式
通常情況下,棧的實現(xiàn)方式有兩種,一種方法是使用指針,而另一種方法則是使用數(shù)組。但是在調(diào)用程序時,我們沒有必要知道具體使用了哪種方法。
一、順序棧
#include<stdio.h> #include<stdlib.h> #define maxsize 64 //定義棧 typedef struct { int data[maxsize]; int top; }sqstack,*sqslink; //設(shè)置??? void Clearstack(sqslink s) { s->top=-1; } //判斷??? int Emptystack(sqslink s) { if (s->top<0) return 1; else return 0; } //進(jìn)棧 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); }
二、鏈?zhǔn)綏?/h2>
#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;
}
// 進(jìn)棧
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");
}
}
#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; } // 進(jìn)棧 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"); } }
到此這篇關(guān)于C語言中棧的兩種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)C語言中棧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言數(shù)組入門之?dāng)?shù)組的聲明與二維數(shù)組的模擬
這篇文章主要介紹了C語言數(shù)組入門之?dāng)?shù)組的聲明與二維數(shù)組的模擬,數(shù)組學(xué)習(xí)的同時也要相應(yīng)理解C語言指針的作用,需要的朋友可以參考下2015-12-12Matlab實現(xiàn)繪制有氣泡感的網(wǎng)絡(luò)圖
這篇文章主要介紹了如何利用Matlab實現(xiàn)繪制有氣泡感的網(wǎng)絡(luò)圖,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下2023-02-02