-
栈的定义:栈是限定在表尾进行插入和删除操作的线性表,它是一种数据结构,其数据元素之间的关系呈线性关系。
2.结构:
3.栈的操作:
(1)入栈:向栈口存储数据元素(push) (2)出栈:从栈中去数据元素(pop) (3)栈顶指针(top):用来指向最后一个入栈元素 (4)入栈操作: ①栈满不可入栈:top=SIZE-1(上溢) ②入栈(未满):top=top+1,S[top]=数据元素 S[top++]=数据元素 (5)出栈操作:只有栈顶元素才可以出栈 ①栈空不可入栈(下溢):top=-1 ②if(栈不空){出栈} if(top!=-1){top-=1;}出栈元素:S[top+1];
4.栈的特殊性:
(1)只有栈顶才能被操作 (2)先进后出表(First In Last Out) (3)举例:1,2,3依次进栈,会有哪些出栈次序? ①1,2,3进,再3,2,1出.出栈次序321 ②1进,1出,2进,2出,3进,3出.出栈次序123 ③1进,2进,2出,1出,3进,3出,出栈次序213 ④1进,1出,2进,3进,3出,2出.出栈次序132 ⑤1进,2进,2出,3进,3出,1出.出栈次序231 提问:有没有312的出栈次序? 答:不会有,因为3先出栈,意味着3进过栈,若3进过,就是说1、2已经在栈里,1是栈底,3是栈顶,出来次序只能是321
5.栈的简单应用: 任意输入一个正整数x,输出x的二进制数.
#include<stdio.h> #include<stdlib.h> #define SIZE 100 int ExchangeBinary(int * Stack,int number); void Print_Bin(int * Stack,int top); int main(void){ int * Stack; Stack = (int *) malloc(sizeof(int )*SIZE); int number,top; printf("Please input a number(number>0):"); scanf("%d",&number); top = ExchangeBinary(Stack,number); printf("BinaryCode is :"); Print_Bin(Stack,top); } int ExchangeBinary(int * Stack,int number){ int top = -1; while(number){ if(top<SIZE){ Stack[++top] = number%2; number /= 2; } else printf("Stack Is Full!"); } return top; } void Print_Bin(int * Stack,int top){ while(top!=-1){ printf("%d",Stack[top--]); } }
栈(Stack)的解释及简单应用
最新推荐文章于 2025-02-15 11:00:00 发布