线性表的应用:
链栈基本操作
#include<stdio.h>
#include<stdlib.h>
typedef struct Linknode{
int data;
struct Linknode *next;
}Linknode,*LiStack;
void InitLiStack(LiStack &LS){
LS = NULL;
}
bool Push(LiStack &LS,int e){
Linknode *p = (Linknode *)malloc(sizeof(Linknode));
if(LS==NULL){
Linknode *S = (Linknode *)malloc(sizeof(Linknode));
S->data = e;
S->next = LS;
LS = S;
}else{
p->data = e;
p->next = LS;
LS = p;
}
return true;
}
bool Pop(LiStack &LS,int &e){
if(LS==NULL){
return false;
}
e = LS->data;
LS = LS->next;
return true;
}
bool LiStackUpdata(LiStack &LS,int e){
if(LS == NULL){
return false;
}
LS->data = e;
return true;
}
int GetElem(LiStack LS){
if(LS == NULL){
return false;
}
return LS->data;
}
int LiStackLenght(LiStack &LS){
int len = 0;
Linknode *p = LS;
while(p!=NULL){
p = p->next;
len++;
}
return len;
}
void PrintLiStack(LiStack LS){
Linknode *p = LS;
int len = LiStackLenght(LS);
printf("链栈的数据元素有:%d\n",len);
if(p){
for(int i=0;i<len;i++){
printf("第%d个元素为:%d\n",i+1,p->data);
p = p->next;
}
}
}
void Copoer(){
printf("--------------------------------------------\n");
printf("| -----1、链栈--初始化----- |\n");
printf("| -----2、栈数据--插入----- |\n");
printf("| -----3、栈数据--删除----- |\n");
printf("| -----4、栈数据--修改----- |\n");
printf("| -----5、栈数据--获取栈顶元素----- |\n");
printf("| -----7、栈数据--展示----- |\n");
printf("| -----0、-----退出------- |\n");
printf("|--------------------------------------------\n\n");
}
int main(){
int i,e,m=10;
LiStack LS;
while (m!=0){
Copoer();
printf("请输入要操作的数字:");
scanf("%d",&m);
if(m==1){
InitLiStack(LS);
}
if(m==2){
printf("请输入要插入的值e:");
scanf("%d",&e);
if(Push(LS,e)){
printf("数据%d插入成功\n",e);
}
}
if(m==3){
e = -1;
if(Pop(LS,e)){
printf("出栈成功,栈的元素为:%d\n",e);
}else{
printf("出栈失败!!!");
}
}
if(m==4){
printf("请输入要修改元素的值e:");
scanf("%d",&e);
if(LiStackUpdata(LS,e)){
printf("栈顶元素%d修改成功\n",e);
}else{
printf("链栈可能为空,未修改成功!!!!!!!\n");
}
}
if(m==5){
if(GetElem(LS)){
printf("栈顶元素为:%d\n",GetElem(LS));
}
}
if(m==7){
PrintLiStack(LS);
}
}
}
注:本程序在vscode上编译运行的,在输入数据时输入的数据之间用“,”逗号隔开。其他的编译软件输入的数据之间应该只需要敲空格。
如有任何问题,欢迎各位留言评论,谢谢!!!!