码迷,mamicode.com
首页 > 编程语言 > 详细

栈的顺序存储结构及应用(C、Java代码)

时间:2019-01-22 13:22:14      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:struct   eve   pre   线性表   print   tst   17.   rgs   inf   

栈的定义:

栈(stack)是限定仅在表尾进行插入和删除的线性表。

我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom) ,不包含任何数据元素的栈称为空栈,栈又称为先进后出的线性表,简称LIFO结构。

栈的插入操作:叫做进栈,或压栈、入栈。

栈的删除操作:叫做,出栈,或者弹栈。

栈的结构定义

1 /*栈的结构定义*/
2 typedef int sElemType;  //sElemType类型定义为int
3 typedef struct {
4 
5     sElemType data[MAXSIZE];
6     int top;   /*用于栈顶指针*/
7 
8 }SqStack;

技术分享图片

入栈操作

技术分享图片

主要代码:

1 /*入栈操作,将元素e入栈*/
2 int PushStack(SqStack* s,sElemType e){
3     //判断入栈的合理性
4     if(s->top == MAXSIZE-1)
5         return 0;
6     s->top++;
7     s->data[s->top]=e;
8     return 1;
9 }

出栈操作

主要代码:

 1 /*出栈操作,并用e返回栈顶元素的值*/
 2 int PopStack(SqStack* s){
 3 
 4     sElemType e;
 5     if((s->top)<0)   /*空栈*/
 6         return 0;    
 7     e=s->data[s->top];
 8     s->top--;
 9     return e;
10 }

用栈之前确记要记得初始化一下

/*栈的初始化*/
void InitStack(SqStack* s){

    s->top =0;
}

实现代码

技术分享图片
 1 #include <stdio.h>
 2 
 3 #define MAXSIZE 20
 4 /*栈的结构定义*/
 5 typedef int sElemType;  //sElemType类型定义为int
 6 
 7 typedef struct {
 8 
 9     sElemType data[MAXSIZE];
10     int top;   /*用于栈顶指针*/
11 
12 }SqStack;
13 
14 /*栈的初始化*/
15 void InitStack(SqStack* s){
16 
17     s->top =0;
18 }
19 
20 /*入栈操作,将元素e入栈*/
21 int PushStack(SqStack* s,sElemType e){
22     //判断入栈的合理性
23     if(s->top == MAXSIZE-1)
24         return 0;
25     s->top++;
26     s->data[s->top]=e;
27     return 1;
28 }
29 
30 /*出栈操作,并用e返回栈顶元素的值*/
31 int PopStack(SqStack* s){
32 
33     sElemType e;
34     if((s->top)<0)   /*空栈*/
35         return 0;
36     
37     e=s->data[s->top];
38     s->top--;
39     return e;
40 }
41 
42 int main(){
43     SqStack stack;
44     InitStack(&stack);
45     PushStack(&stack,100);
46     int pop=PopStack(&stack);
47     printf("出栈数据:%d\n",pop);
48 
49     return 0;
50 }
View Code

技术分享图片

 

 

 Java代码实现

技术分享图片
 1 package stackdemo;
 2 
 3 public class SqeStack {
 4 
 5     int top; // 栈顶指针
 6     int data[] = new int[20];
 7 
 8     /**
 9      * 栈的初始化
10      */
11     public void InitStack(SqeStack s) {
12         s.top = 0;
13     }
14 
15     /**
16      * 进栈操作,n进栈数据
17      */
18     int PushStack(SqeStack s, int n) {
19 
20         if (s.top == 19)
21             return 0;
22 
23         s.top++;
24         s.data[s.top] = n;
25         return 1;
26     }
27 
28     /**
29      * 出栈操作
30      */
31     int PopStack(SqeStack s) {
32         int e;
33 
34         if (s.top == 0)
35             return 0;
36         e = s.data[s.top];
37         s.top--;
38         return e;
39     }
40 
41 }
View Code
技术分享图片
 1 package stackdemo;
 2 
 3 public class TestStack {
 4 
 5     public static void main(String[] args) {
 6         // TODO Auto-generated method stub
 7 
 8         SqeStack s = new SqeStack();
 9         s.InitStack(s);
10         s.PushStack(s, 10);
11         int pop = s.PopStack(s);
12         System.out.println("出栈数据: " + pop);
13     }
14 }
View Code

完毕 - -

 

栈的顺序存储结构及应用(C、Java代码)

标签:struct   eve   pre   线性表   print   tst   17.   rgs   inf   

原文地址:https://www.cnblogs.com/liuzeyu12a/p/10303116.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!