/**
頭文件stu.h
@jeasn168
*/
#include<stdio.h>
#include<string.h>
#define MaxS 50
typedef struct
{
char name[MaxS];
char stuno[MaxS];
float score;
}stu;
//輸出stu
void DispStu(const stu &s)
{
printf("Name:%s\n",s.name);
printf("StuNo:%s\n",s.stuno);
printf("Score:%f\n",s.score);
}
//比較stu類型
int isEqual(const stu &a,const stu &b)
{
if(strcmp(a.name,b.name)==0&&strcmp(a.stuno,b.stuno)==0&&a.score==b.score)
return 1;
else
return 0;
}
/**
鏈棧LinkStack.cpp
@jeasn168
*/
#include<stdio.h>
#include<malloc.h>
#include"stu.h"
//#define MaxSize 1000
typedef stu ElemType;
//定義鏈棧結構
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LiStack;
//初始化
void InitStack(LiStack *&s)
{
s=(LiStack *)malloc(sizeof(LiStack));
s->next=NULL;
printf("初始化棧!\n");
}
//判斷棧是否爲空
int StackEmpty(LiStack *s)
{
return(s->next==NULL);
}
//進棧,採用頭插法
int Push(LiStack *&s,const ElemType &e)
{
LiStack *p;
p=(LiStack *)malloc(sizeof(LiStack));//創建節點
p->data=e;
p->next=s->next;
s->next=p;
return 1;
}
//出棧
void Pop(LiStack *&s,ElemType &e)
{
if(StackEmpty(s))
{
printf("棧已空!\n");
}
LiStack *p=s->next;
e=p->data;
s->next=p->next;
free(p);
}
//求棧的長度
int StackLength(LiStack *s)
{
LiStack *p=s->next;
int len=0;
while(p!=NULL)
{
len++;
p=p->next;
}
return len;
}
//輸出棧的內容
void DispLiStack(LiStack *s)
{
LiStack *p=s->next;
while(p!=NULL)
{
DispStu(p->data);
p=p->next;
}
printf("\n");
}
//銷燬棧
void DestroyStack(LiStack *&s)
{
LiStack *p=s->next;
while(p!=NULL)
{
s->next=p->next;
free(p);
p=s->next;
}
free(s);
printf("銷燬棧!\n");
}
int main()
{
stu student[5]={{"Li","S12101",85},{"Liu","S12102",92.5},{"Wang","S12103",54},{"Huang","S12104",76},{"John","S12105",78}};
stu st1={"LiLy","S12108",85},st2;
int t,i=0,len=0;
t=sizeof(student)/sizeof(stu);
LiStack *stuLiStack;
InitStack(stuLiStack);
printf("頭插法建棧:\n");
for(i=0;i<t;i++)
{
Push(stuLiStack,student[i]);
}
len=StackLength(stuLiStack);
printf("棧長度爲:%d\n",len);
printf("輸出棧內容:\n");
DispLiStack(stuLiStack);
printf("棧頂元素彈出:\n");
Pop(stuLiStack,st2);
DispStu(st2);
printf("輸出棧內容:\n");
DispLiStack(stuLiStack);
DestroyStack(stuLiStack);
return 0;
}
數據結構鏈棧的各種操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.