前言
本篇文章介绍的是C语言如何实现栈的顺序存储结构
提示:以下是本篇文章正文内容,下面案例可供参考
二、使用步骤
1.引入库
代码如下:
#include<stdio.h> //这个输入/输出函数的库
#include<stdlib.h> //这个是malloc函数的库
#include<process.h> //用于暂停,使得结果呈现在控制台
2.代码实现
代码如下:
//栈的顺序存储结构
#include<stdio.h>
#include<stdlib.h>
#include<process.h>
#define MAX 50 //栈的最大存储结构
//初始化
typedef struct Stack
{
int top; //栈顶
char sa[MAX]; //存储栈的元素
}RStack;
//生成栈
RStack *init()
{
RStack *SS;
SS = (struct Stack*)malloc(sizeof(struct Stack));
SS->top = 0;
return SS;
}
//进栈
void push(RStack *S, char x)
{
if(S->top == MAX) //判断是否栈满
{
printf("the stack is full");
exit(0);
}//栈满
else
{
S->sa[S->top] = x;
S->top++;
}
}
//判断栈是否为空
int empty(RStack S)
{
if(S.top == 0)
{
return 1;
}
return 0;
}
//取栈顶的元素
char getTopValue(RStack *S)
{
if(empty(*S))
{
printf("栈空");
exit(0);
}else
{
int index = S->top - 1;
return S->sa[index];
}
}
//出栈
char pop(RStack *S)
{
if(empty(*S))
{
printf("the stack is no element");
return 'E';
}
else
{
return S->sa[--S->top];
}
}
//打印函数
void display(RStack *S)
{
int index = S->top; //防止栈顶value值发生变化
while(index != 0)
{
printf("->%c", S->sa[--index]);
}
}
int main()
{
RStack *R;
//生成一个栈
R = init();
//进栈
for(char i = 'A'; i <= 'F'; i++)
{
push(R,i); //利用进栈去生成栈
}
printf("栈的原始表:");
//打印函数
display(R);
//取栈顶元素值
printf("\n取栈顶元素:%c\n", getTopValue(R));
//出栈(先进后出的原则)
printf("栈的出栈元素:%c\n", pop(R));
system("pause");
return 0;
}
结果:
栈的原始表:
->F->E->D->C->B->A
取栈顶元素:F
栈的出栈元素:F
该处使用的url网络请求的数据。
总结
简单总结:文章所展示的代码是数据结构C语言第二版, 栈的顺序存储结构的构造方法,其中也包括其基本操作, 顺序存储结构,底层原理还是利用了数组去实现,只不过栈的操作规则是:先进后出原则。