`

数据结构之栈的相关操作

阅读更多
原帖地址:http://www.cnblogs.com/zxjie/archive/2013/06/04/3116523.html

  1 //栈的顺序存储相关操作
2 #include<stdio.h>
3 #include<stdlib.h>
4 //#include<string.h>
5 #define MAX 100
6 //定义结构体
7 typedef struct Stack
8 {
9 int *data;
10 int *top;
11 int stacksize;
12 }Stack;
13 //初始化空栈
14 int stackinit(Stack *s)
15 {
16 s->data=(int*)malloc(sizeof(int)*MAX);
17 if(s->data==NULL)
18 {
19 printf("初始化失败!");
20 }
21 s->top=s->data;
22 s->stacksize=MAX;
23 return 0;
24 }
25
26 //判断是否为空
27 int stackisempty(Stack *s)
28 {
29 if(s->data==s->top)
30 {
31 return 1;
32 }
33 else
34 {
35 return 0;
36 }
37 }
38 //进栈
39 int stackpush(Stack *s,int a)
40 {
41 if(s->top-s->data>=s->stacksize)
42 {
43 s->data=(int*)realloc(s->data,sizeof(int)*(MAX+s->stacksize));
44 if(s->data==NULL)
45 {
46 printf("重新分配空间失败!");
47 return 0;
48 }
49 s->stacksize=s->stacksize+MAX;
50 s->top=s->data+MAX;
51 }
52 *s->top=a;
53 s->top++;
54 return 1;
55 }
56 //出栈
57 int stackpop(Stack *s,int *a)
58 {
59 if(stackisempty(s)==1)
60 {
61 printf("出栈失败!");
62 return 0;
63 }
64 else
65 {
66 s->top--;
67 *a=*s->top;
68 return 1;
69 }
70 }
71
72 //返回栈的长度
73 int stacklength(Stack *s)
74 {
75 return (s->top-s->data);
76 }
77 //遍历栈
78 int stacktraverse(Stack *s)
79 {
80 int *s1=NULL;
81 // s1=(int *)malloc(sizeof(int));
82 s1=s->top;
83 if(stackisempty(s)==1)
84 {
85 printf("栈为空!");
86 return 0;
87 }
88 while(--s1!=s->data)
89 {
90 printf("%d ",*s1);
91 }
92 printf("\n");
93 return 1;
94 }
95 //清空栈
96 int stackdestory(Stack *s)
97 {
98 s->top=s->data;
99 return 1;
100 }
101 void main()
102 {
103 int i=0;
104 int a=0;
105 Stack s;
106 stackinit(&s);
107 for(i=0;i<10;i++)
108 {
109 stackpush(&s,i);
110 }
111 printf("length of s :%d\n",stacklength(&s));
112 stacktraverse(&s);
113 stackpop(&s,&a);
114 printf("pop:%d\n",a);
115 stacktraverse(&s);
116 printf("length of s :%d\n",stacklength(&s));
117 printf("s is empty?:%d\n",stackisempty(&s));
118 stackdestory(&s);
119 printf("s is empty?:%d\n",stackisempty(&s));
120 }


 

本文链接

分享到:
评论

相关推荐

    数据结构顺序栈验证实验报告.pdf

    数据结构中的顺序栈是一种特殊的线性表,它具有后进先出(LIFO)的特点,即...通过设计和实现顺序栈的基本操作,学生能够更好地掌握数据结构的原理和应用,而数制转换问题则进一步巩固了对数值计算和算法设计的理解。

    数据结构 顺序栈

    数据结构是计算机科学中的...总结来说,顺序栈是一种简单而有效的数据结构,利用数组实现,提供了快速的插入和删除操作。通过分析和理解上述代码,我们可以更好地掌握顺序栈的原理和使用方法,并能应用于实际问题中。

    数据结构--栈的基本操作

    总结来说,栈作为基础数据结构,其基本操作包括压栈、弹栈、查看栈顶元素、检查栈是否为空以及获取栈的大小。在各种计算任务和算法中,栈都扮演着不可或缺的角色。顺序栈作为栈的一种实现形式,以其简单的结构和易于...

    数据结构栈和队列试题及答案

    ### 数据结构之栈和队列知识点详解 #### 一、选择题知识点解析 1. **栈的操作原则** 栈是一种特殊的线性表,它只允许在一端进行插入和删除操作,这一端称为栈顶(top)。另一端称为栈底(bottom),不允许在其上进行...

    数据结构之栈(C实现)

    栈被称为“后进先出”(Last In, First Out,简称LIFO)的数据结构,它的主要操作包括压栈(Push)和弹栈(Pop)。压栈是指将元素添加到栈顶,而弹栈则是从栈顶移除元素。栈在计算机科学中的应用非常广泛,例如...

    数据结构说课稿——栈.pdf

    在数据结构中,栈是一种非常重要的数据结构,通常被称为后进先出(Last In First Out,LIFO)的线性数据结构。本文将详细介绍栈的概念、实现方式以及在编程和算法设计中的应用,并提出一种教学设计方案,以此帮助...

    数据结构——栈(代码)

    数据结构是计算机科学中的核心概念,它涉及到如何...在实际应用中,除了基础的栈操作,还可以扩展其他功能,如获取栈的当前大小、查找某个元素等。理解并熟练掌握栈的实现与操作,对编程和算法设计有着至关重要的作用。

    数据结构栈的实验报告.doc

    在 `main` 函数中,通过调用上述定义的栈操作函数,实现了对栈的初始化、元素的入栈、出栈以及打印栈内元素的功能。用户可以输入要入栈的元素数量,程序会依次执行这些操作,并在每次出栈后展示剩余的栈内元素。 7...

    数据结构栈操作

    该代码主要完成数据结构中关于栈的一些操作函数,包括初始化栈,压栈,出栈等操作,本代码还对栈的具体应用给予举例,来完成进制数据之间的转换,包括将十进制数转换为二进制数和八进制数,希望对学习数据结构的同志...

    数据结构之栈和队列基本操作及实践

    在提供的压缩包文件“栈和队列”中,可能包含了关于这两种数据结构的实例代码、练习题或者相关教程,通过学习和实践这些材料,你将能够更深入地理解栈和队列的工作原理,并能灵活地应用于实际项目中。

    数据结构之栈的定义及实现

    在这个主题中,“数据结构之栈的定义及实现”将深入探讨栈的基本概念、操作以及在编程中的具体实现。 栈的定义: 栈是一种线性数据结构,它的特点是元素只能在栈的一端进行插入和删除操作,这一端被称为栈顶。新...

    数据结构:栈(包含线性表)

    在这里,我们可以理解为创建了一个类似CArray和CList的组合数据结构,它既支持线性表的操作,也支持栈的操作。 对于顺序存储结构的栈,其基本操作包括: 1. 入栈(Push):在栈顶添加元素。 2. 出栈(Pop):移除并...

    数据结构栈的表达式实验报告

    在这个“数据结构栈的表达式实验报告”中,主要讨论了如何利用栈来实现算术表达式的求值。 实验的目标是加深对栈逻辑特性和物理特性的理解,并通过实际编程锻炼应用解决复杂问题的能力。具体来说,实验要求用C++...

    数据结构栈和队列(参考代码)

    ### 数据结构栈和队列知识点解析 #### 一、栈的基本概念与操作 **栈**是一种特殊的线性表,只允许在一端进行插入和删除操作,这一端被称为栈顶,另一端被称为栈底。栈遵循先进后出(First In Last Out, FILO)的...

    数据结构栈的基本操作实现及栈的应用

    有关顺序栈的基本操作算法,分别编写栈初始化、入栈、出栈取栈顶元素等与本实验有关的实现顺序基本操作的函数以及括号匹配判断函数

    数据结构 栈的实现(c语言版)

    以上代码展示了如何使用C语言创建一个基本的栈数据结构,并实现了主要的栈操作。在实际应用中,你可以根据需要对这些基本操作进行扩展,比如支持多类型元素、错误处理等。 在压缩包中,可能包含了实现这些功能的源...

    数据结构栈的输入与输出

    数据结构中栈的操作,输入与输出,可以正常运行

    数据结构:栈子系统.docx

    在本题中,我们讨论的是一个栈子系统,它包括了多个与栈操作相关的功能,如进栈、出栈、显示栈内所有元素以及两个特定的应用程序:将十进制数转换为二进制数和将中缀表达式转换为后缀表达式(逆波兰式)。...

    数据结构栈计算器

    在本项目"数据结构栈计算器"中,我们将深入探讨栈这一特殊的数据结构及其在实现计算器功能时的应用。栈是一种后进先出(LIFO)的数据结构,常用于解决逆序操作的问题,比如表达式求值。 首先,让我们来看看"中缀转...

    数据结构中栈和队列思想的停车场管理系统

    基于c语言数据结构中栈和队列思想的简单停车场管理系统,以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。每一组输入数据包括三个数据项:汽车“到达”或“离去”信息、汽车...

Global site tag (gtag.js) - Google Analytics