栈和队列及其应用(实验三)(2)

2020-03-27 14:17

SElemType *p; p=S.base; printf(\被删除的栈顶元素为:%d\\n\ printf(\此时栈中元素为:\\n\ while(p!=S.top) { printf(\ p++; } printf(\ } break; case 0:printf(\程序结束!\\n\ break; default:printf(\输入错误\\n\ }

}while(b!=0&&b!=1); if(b==1) {

printf(\若需进行其他功能,则要重启程序,新建空栈\\n\ }

return 0; }

链式存储

头文件:

#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0

typedef int Status; typedef int SElemType; typedef struct LNode {

SElemType data; struct LNode *next; }LNode,*LinkList;

Status Init(LinkList &SL,int num1); Status Push(LinkList &SL,int e,int &num1); Status Pop(LinkList &SL,int &e,int &num1);

Status Get(LinkList SL);

Status Clear(LinkList &SL,int &num1); void Emply(LinkList SL);

功能函数: #include\#include\#include\

Status Init(LinkList &SL,int num1) {

printf(\请输入相应个数的各个具体元素(空格隔开)\\n\ SL=(LinkList)malloc(sizeof(LNode)); scanf(\ SL->next=NULL;

for(int i=0;i

LinkList s=NULL;

s=(LinkList)malloc(sizeof(LNode)); scanf(\ s->next=SL; SL=s; }

return OK; }

Status Get(LinkList SL) {

return SL->data; }

Status Clear(LinkList &SL,int &num1) {

if(SL==NULL)printf(\该栈本就为空\\n\ while(!SL) {

LinkList p=SL; if(p->next!=NULL) {

SL=p->next; free(p); } else {

free(SL);

} }

if(SL==NULL) {

num1=0;

printf(\该栈已清空\\n\ } else {

printf(\清空功能没有正常完成!\\n\ }

return OK; }

void Emply(LinkList SL) {

if(SL==NULL) {

printf(\该栈为空\\n\ } else {

printf(\该栈不为空\\n\ } }

Status Push(LinkList &SL,int e,int &num1) {

LinkList s=NULL;

s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=SL; SL=s; num1++; return OK; }

Status Pop(LinkList &SL,int &e,int &num1) {

e=SL->data; LinkList s; s=SL;

SL=SL->next;

free(s); num1--; return OK; }

主函数:

#include\#include\#include\

int main() {

printf(\是否建立链栈?\\n\ printf(\、建立\\n\

printf(\、不建立并退出程序\\n\ int a;//选择建立 scanf(\ switch(a) {

case 1: { LinkList SL=NULL; int num;//用户确定的元素个数 printf(\请确定元素个数\\n\ scanf(\ Init(SL,num); printf(\此时的链栈中元素为(从栈顶到栈底):\\n\ LinkList b=SL; for(int i=0;inext; } printf(\ printf(\请选择以下功能:\\n\ int x;//用于选择功能 do { printf(\、入栈\\n\ printf(\、出栈\\n\ printf(\、查看栈顶元素\\n\ printf(\、清空栈\\n\ printf(\、判空\\n\ printf(\、查看栈的长度\\n\ printf(\、结束程序\\n\

scanf(\ switch(x) { case 1: { printf(\请输入新的栈顶元素\\n\ int data;//用户输入的新的栈顶元素 scanf(\ Push(SL,data,num);

printf(\此时的链栈中元素为(从栈顶到栈底):\\n\ LinkList b=SL; for(int i=0;inext; } printf(\ } break; case 2: { int e;//用于承载栈顶元素 Pop(SL,e,num); printf(\出栈的元素为:%d\\n\

printf(\此时栈中的元素有(从栈顶到栈底):\\n\ LinkList b=SL; for(int i=0;inext; } printf(\ } break; case 3: { printf(\此时的栈顶元素为:%d\\n\ } break; case 4: { Clear(SL,num); } break;


栈和队列及其应用(实验三)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:秋天里的一件趣事

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: