java 数据结构之栈与队列

2025-05-29 0 85

java 数据结构队列

一:对列

队列是一种先进先出的数据结构

实现代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81
package Queue;

/*

* 使用java构建队列,并模拟实现队列的入队和出对方法

*/

public class Queue { //队列类

private int maxSize; //定义队列的长度

private int[] arrQueue; //队列

private int rear; //定义队列的尾指针

private int front; //定义队列的头指针

private int empty; //元素的个数

public Queue(int s) //初始化构造函数

{

maxSize = s;

arrQueue = new int[s];

rear = -1;

front=0;

empty = 0;

}

//实现插入方法

public void insert(int m)

{

if(rear == maxSize-1) //处理循环

rear = -1;

arrQueue[++rear] = m; //对尾指针加一,把值放在队列结尾

empty++; //队列元素个数加1

System.out.println("队列入队元素 为:" + m);

}

//实现出栈的方法,即取得队列的头元素

public int remove()

{

int temp = arrQueue[front++]; //将栈顶元素赋值给temp,栈顶指针加1

if(front == maxSize) //处理循环

front = 0;

empty--; //元素个数-1

return temp;

}

//判断队列是否为空

public boolean isEmpty()

{

return (empty==0);

}

//判断对列是否为满

public boolean isFull()

{

return (empty == maxSize);

}

//返回队列长度

public int qLong()

{

return empty;

}

public static void main(String[] args) {

Queue q = new Queue(5); //初始化队列为5个元素

q.insert(1);

q.insert(2);

q.insert(3);

q.insert(4);

q.insert(5);

int t1 = q.remove();

System.out.println("队列元素出队:" + t1);

int t2 = q.remove();

System.out.println("队列元素出队:" + t2);

System.out.println("队列是否为空:" + q.isEmpty());

System.out.println("队列是否为满:" + q.isFull());

System.out.println("队列的长度:" + q.qLong());

}

}

二:

是一种先进后出的数据结构

1:使用数组模拟

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74
package Statck;

/*

* 使用java构建栈,并模拟实现栈的入栈和出栈方法

* 使用数组实现

*/

public class Statck1 {

private int maxSize; //栈的最多元素数

private int top; //栈顶指针

private int len; //栈的深度

private int[] arrStack; // 模拟栈

//栈的初始化

public Statck1(int s){

maxSize = s;

len =0;

top= -1;

arrStack = new int[s];

}

//获取栈的长度

public int getLen(){

return len;

}

//获取当前栈还能插入多少个f元素

public int getLeaveLen(){

return (maxSize-len);

}

//判断栈是否满

public boolean isFull(){

return (len==maxSize);

}

//判断栈是否为空

public boolean isEmpty(){

return (len ==0);

}

//元素入栈

public void inStack(int s)

{

arrStack[++top] = s; //栈顶指针加1,入栈

System.out.println("元素入栈:" + s);

len ++ ;//栈深度+1

}

//元素出栈

public int outStack()

{

int temp = arrStack[top--];//赋值之后减1

System.out.println("元素出栈:" + temp);

len--; //栈深度-1

return temp;

}

public static void main(String[] args) {

Statck1 s = new Statck1(5);

s.inStack(1);

s.inStack(2);

s.inStack(3);

s.inStack(4);

s.inStack(5);

s.outStack();

s.outStack();

System.out.println("栈的长度:" + s.getLen());

System.out.println("还能入栈元素个数:" + s.getLeaveLen());

System.out.println("栈的是否为空:" + s.isEmpty());

System.out.println("栈的是否为满:" + s.isFull());

}

}

2:使用链表模拟

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70
package Statck;

import java.util.ArrayList;

import java.util.EmptyStackException;

import java.util.List;

/*

* 使用java构建栈,并模拟实现栈的入栈和出栈方法

* 使用链表实现

*/

public class Statck2<E extends Object> {

private List<E> statck = new ArrayList<E>();

public Statck2(){

//栈的初始化

}

//清空栈

public void clear(){

statck.clear();

System.out.println("清空栈..........");

}

//判断栈是否为空

public boolean isEmpty(){

return statck.isEmpty();

}

//获取栈顶元素

public E getTop(){

if(isEmpty())

return null;

return statck.get(0);

}

//弹出栈操作

public E pop(){

if (isEmpty())

throw new EmptyStackException();

System.out.println(statck.size() + "\\t 出栈");

return statck.remove(statck.size() - 1);

}

//压入栈操作

public void push(E e){

statck.add(e);

System.out.println(e + "\\t 入栈");

}

//获取当前栈的深度

public int getStatckSize(){

if(isEmpty())

throw new EmptyStackException();

return statck.size();

}

public static void main(String[] args) {

Statck2 s = new Statck2();

s.clear(); //清空栈

System.out.println("当前栈是否为空:" + s.isEmpty());

s.push(1);

s.push(2);

s.push(3);

s.pop();

System.out.println("当前栈的深度为:" + s.getStatckSize());

System.out.println("当前栈顶元素为:" + s.getTop());

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持,如有疑问请留言或者到本站社区交流讨论,大家共同进步!

原文链接:http://blog.csdn.net/gamer_gyt/article/details/51457106

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 java 数据结构之栈与队列 https://www.kuaiidc.com/115610.html

相关文章

发表评论
暂无评论