收藏 分销(赏)

链栈基本操作.doc

上传人:pc****0 文档编号:7905355 上传时间:2025-01-25 格式:DOC 页数:6 大小:39.50KB 下载积分:10 金币
下载 相关 举报
链栈基本操作.doc_第1页
第1页 / 共6页
链栈基本操作.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
#include<stdio.h> #include<stdlib.h> #define OK 0 #define ERROR 1 int MAX_SIZE = 20; // 顺序栈的表示方法 typedef struct { int* pData; // top=-1表示栈为空, top范围-1~MAX_SIZE int top; //top=MAX_SIZE-1表示栈满 }SeqStack; SeqStack* InitList(SeqStack* L) { if (NULL==L) { L=(SeqStack*)malloc(sizeof(SeqStack)); //为L开辟空间 } if (!L) { printf("初始化失败!\n"); //开辟失败输出的提示 return NULL; } L->pData=(int*)malloc(MAX_SIZE*sizeof(int)); //为栈开辟空间 if(!L->pData) { free(L); //如果开辟失败释放L的空间 printf("初始化失败!\n"); return NULL; } L->top=-1; //栈为空 return L; } // 顺序栈的销毁 int DestroyList(SeqStack* L) { if(L->pData) { free(L->pData); //释放栈的空间 L->pData=NULL; } L->top=-1; //栈置空 return 1; } // 获取栈顶元素 int GetTop(SeqStack* L) { if(-1==L->top) { printf("栈已空!\n"); //如果L->pData等于-1则栈是空的 exit(1); } return L->pData[L->top]; //返回栈顶元素 } // 出栈操作 int Pop(SeqStack* L) { if(-1==L->top) { printf("栈已空!\n"); //如果L->pData等于-1则栈是空的 exit(1); } return L->pData[L->top--]; //返回栈顶元素,栈顶减1 } // 入栈操作 int Push(SeqStack *L, int x) { if(!L->pData || L->top>=MAX_SIZE-1) { printf("顺序栈不存在或是栈已满, 不能插入!"); //如果栈顶等于栈元素最大个数,则栈已满 return ERROR; } L->top++; //栈顶加1 *(L->pData+L->top)=x; //要入栈的元素放入栈顶 return OK; } // 输出某个数据 void PrintDataType(int x) { printf("%d", x); //输出传过来的元素 printf("\n"); } // 输出顺序栈中的每个元素 void PrintList(SeqStack* L) { int k=0; if(!L->pData) { printf("顺序栈不存在!\n"); //如果L->pData为0,则栈不存在 return; } if(-1==L->top) { printf("顺序栈是空的!\n"); //如果栈顶为-1 ,则栈为空 return; } printf("栈中的元素有:\n"); for(k=0; k<=L->top; k++) { PrintDataType(L->pData[k]); //调用PrintDataType()函数,输出栈中的的值 } } // 置空栈 int SetEmpty(SeqStack* L) { if(!L->pData) { return ERROR; } L->top=-1; //站定赋值-1,栈置空 return OK; } // 求栈中元素个数 int GetCnt(SeqStack* L) { if(L->pData) { return L->top+1; } return -1; // 顺序栈没有分配内存时, 返回-1 } // 判断是否为空: 1为空, 0为非空 int IsEmpty(SeqStack* L) { if(!L->pData) { printf("顺序栈不存在!\n"); } return -1==L->top; } // 判断是否为满: 1为满, 0为不满 int IsFull(SeqStack* L) { if(!L->pData) { printf("顺序栈不存在!\n"); } return MAX_SIZE==L->top+1; } void main() { SeqStack* L=NULL; L=InitList(L); // 初始化顺序栈 PrintList(L); // 打印顺序栈 printf("插入三个元素后"); Push(L, 10); // 把元素10入栈 Push(L, 12); // 把元素12入栈 Push(L, 14); // 把元素14入栈 PrintList(L); // 打印顺序栈 printf("栈顶元素为:"); PrintDataType(GetTop(L)); printf("岀栈元素为:"); PrintDataType(Pop(L)); PrintList(L); // 打印顺序栈 printf("栈顶元素为:"); PrintDataType(GetTop(L)); if(IsEmpty(L)){ printf("顺序栈是空的\n"); }else{ printf("顺序栈是非空的\n"); } printf("置空栈后"); SetEmpty(L); // 把顺序栈置空 PrintList(L); // 打印顺序栈 DestroyList(L); // 不要忘了 printf("栈已销毁!\n"); PrintList(L); // 打印顺序栈 if (NULL!=L) free(L); } - 6 -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服