链栈 怼烎@ 2022-08-25 05:27 101阅读 0赞 \#define OK 1 \#define ERROR 0 \#define TRUE 1 \#define FALSE 0 \#define INFEASIBLE -2 \#define OVERFLOW -1 \#include \#include using namespace std; typedef int Status; //Status 相当于 int typedef struct Node \{ int elem; struct Node \* next; \}Node;//结点 typedef struct Stack \{ Node \* base; Node \* top; \}LinkStack; //栈 //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*函数的声明\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* void InitStack(LinkStack &S) //创建一个空栈 \{ S.base = (Node \*)malloc(sizeof(Node) ); if(!S.base ) exit(OVERFLOW); //存储分配失败 S.top = S.base; cout<<"初始化成功"<<endl; return ; \} Status StackEmpty(LinkStack S)//判断是否为空 \{ if(S.top == S.base) \{ cout<<"栈为空!"<<endl; return TRUE; \} else return FALSE; \} void TraverseStack(LinkStack S)//输出当前顺序表 \{ if(StackEmpty(S)) return ; Node \* p = S.top ; cout<<"栈中的元素为:"; while( p != S.base ) \{ cout<<p->elem<<" "; p = p->next; \} cout<<endl; \} void Push(LinkStack &S )//插入元素e为新的栈顶元素 \{ int e; cout<<"请输入要入栈的元素:"; cin>>e; Node \* pNew = (Node \*)malloc(sizeof(Node)); if(pNew == NULL ) exit(OVERFLOW); pNew->elem = e; pNew->next = S.top ; S.top = pNew; \} void Pop(LinkStack &S)//出栈,出栈元素为e \{ if(StackEmpty(S)) return ; Node \* p = S.top; p->elem = S.top->elem ; S.top = S.top->next; cout<<"出栈成功!出栈元素为"<<p->elem <<endl; free(p); \} void StackLength(LinkStack S)//返回栈的长度 \{ int len = 0; if(StackEmpty(S)) return ; Node \* p = S.top; while(p != S.base ) \{ len++; p = p->next; \} cout<<"栈的长度为:" <<len<<endl; \} void GetTop(LinkStack S) \{ if(StackEmpty(S)) return; cout<<"栈顶元素为:"<< S.top->elem <<endl; \} //\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*主函数\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* int main(void) \{ LinkStack S;//定义一个栈 int num,door = 1,init =0; while( door ) \{ printf("\\n-------------------------------------------------------------\\n"); printf("如要对链栈进行操作,请输入各项前面相应的数字\\n"); printf("\++++++++++++++++++++++++++++++\\n"); printf("| 1、初始化链栈|\\n"); printf("| 2、查看当前链栈|\\n"); printf("| 3、入栈|\\n"); printf("| 4、出栈|\\n"); printf("| 5、查看链栈长度|\\n"); printf("| 6、查看链栈栈顶元素|\\n"); printf("| 0、退出|\\n"); printf("\++++++++++++++++++++++++++++++\\n"); printf(" 请输入数字进行操作:"); scanf("%d",&num); if(num==0||num==1||num==2||num==3||num==4||num==5||num==6||num==7) \{ switch( num ) \{ case 0: door = 0; break; case 1: InitStack( S ); init=1; break; case 2: if(init) TraverseStack(S); else printf("请先对顺序表进行初始化!\\n"); break; case 3: if(init) Push(S); else printf("请先对顺序表进行初始化!\\n"); break; case 4: if(init) Pop(S); else printf("请先对顺序表进行初始化!\\n"); break; case 5: if(init) StackLength(S); else printf("请先对顺序表进行初始化!\\n"); break; case 6: if(init) GetTop(S); else printf("请先对顺序表进行初始化!\\n"); break; \} \} \} return 0; \}
相关 链栈 typedef struct LinkNode { ElemType data; struct LinkNode next; }LinkSt - 日理万妓/ 2023年08月17日 15:15/ 0 赞/ 71 阅读
相关 链栈 链栈的基本操作与顺序栈一致,但是实现方法有较大差异 首先是在成员变量上,链栈中只包含了一个top指针(主要原因是链栈是动态存储的,在程序运行过程中给需要的变量分配内存,而顺 梦里梦外;/ 2023年02月27日 13:34/ 0 赞/ 5 阅读
相关 java栈链_java实现链栈 标签: 接下来,学习java实现链栈。 链栈类代码: package linkedstack; public class LinkStack \{ private E 悠悠/ 2022年11月04日 00:49/ 0 赞/ 176 阅读
相关 链栈 \define OK 1 \define ERROR 0 \define TRUE 1 \define FALSE 0 \define INFEASIBLE - 怼烎@/ 2022年08月25日 05:27/ 0 赞/ 102 阅读
相关 链栈 package com.loong.datastructure; / 链栈 @author Loong @param <E> / p 不念不忘少年蓝@/ 2022年07月19日 02:17/ 0 赞/ 115 阅读
相关 链式栈 2016年7月23日15:39:13 为什么需要链式栈? 这是因为,顺序栈的使用需要事先指定存贮空间的大小,如果静态分配的存贮空 ╰+哭是因爲堅強的太久メ/ 2022年07月16日 13:29/ 0 赞/ 236 阅读
相关 链栈 include <iostream> using namespace std; class node { friend clas 妖狐艹你老母/ 2022年07月14日 07:22/ 0 赞/ 107 阅读
相关 链式栈 链式栈 // //Description:链式栈 // include <iostream> include <malloc.h> 偏执的太偏执、/ 2022年06月18日 01:56/ 0 赞/ 166 阅读
相关 链栈 include<stdio.h> typedef struct node { int data; struct node 系统管理员/ 2022年06月16日 13:15/ 0 赞/ 130 阅读
相关 链栈 //linkstack.h include<string.h> include<malloc.h> include<limits.h> inc 「爱情、让人受尽委屈。」/ 2022年06月03日 20:42/ 0 赞/ 125 阅读
还没有评论,来说两句吧...