栈和队列的应用验报告.docVIP

  • 2
  • 0
  • 约 10页
  • 2016-10-16 发布于贵州
  • 举报
栈和队列的应用验报告

栈和队列的应用(10003809389j) 一 实验目的 二 实验实验 链栈: #include LinkList0.c/*详见实验1*/ LinkList InitStack_Sl() { LinkList S; S=InitList_Sl(); return S; } Status DestroyStack_Sl(LinkList S) { if(!S) return ERROR;/*链栈不存在*/ DestroyList_Sl(S); return OK; } Status StackEmpty_Sl(LinkList S) { if(!S) return ERROR;/*链栈不存在*/ if(S-next==NULL) return TRUE; else return FALSE; } /*若链栈S存在,则当S非空时返回栈顶元素e */ Status StackGetTop_Sl(LinkList S) { if(!S) return ERROR;/*链栈不存在*/ if(S-next==NULL) return FALSE;/*栈空*/ else return (S-next-elem); } /*若链栈S存在,则当S非空时,删除栈顶元素并用e保存删除的栈顶元素*/ Status StackPop_Sl(LinkList S,ElemType *e) { if(!S) return ERROR;/*链栈不存在*/ ListDelete_Sl(S,e); return OK; } /*若链栈S存在时,插入元素e为新的栈顶元素*/ Status StackPush_Sl(LinkList S,ElemType e) { if(!S) return ERROR;/*链栈不存在*/ ListInsert_Sl(S,e); return OK; } /*若链栈S存在,返回链栈中元素个数*/ int StackLength_Sl(LinkList S) { if(!S) return ERROR;/*链栈不存在*/ return ListLength_Sl(S); } /*若链栈S存在,遍历链栈S,对每个元素执行操作void(*operate)(ElemType*)*/ Status StackTraverse_Sl(LinkList S,void(*operate)(ElemType*)) { if(!S) return ERROR;/*链栈不存在*/ return(ListTraverse_Sl(S,operate)); } 链队列 #include LinkList0.c/*详见实验1*/ typedef struct Qode{ ElemType elem; struct Qode *next; } Qode,*Queue; typedef struct { Queue front; Queue rear; }Linkqueue, *LinkQueue; /*InitQueue_Sq()构造一个空的队列*/ LinkQueue InitQueue_Sl() { LinkQueue Q; Q-front=Q-rear=(Queue)malloc(sizeof(Qode)); if(!Q-front) return NULL;/*存储分配失败*/ Q-front-next=NULL; return Q; } /*若队列Q存在,销毁链队列Q*/ Status DestroyQueue_Sl(LinkQueue Q) { Queue p; if(!Q) return ERROR;/*链队列不存在*/ do{ /*释放单向线性链表空间*/ p=Q-front; Q-front=Q-front-next; free(p); }while(Q-front); return OK; } /*若链队列Q存在,则当Q为空时返回TRUE,否则返回FALSE*/ Status QueueEmpty_Sl(LinkQueue Q) { if(!Q) return ERROR;/*链队列不存在*/ if(Q-front==Q-rear) return TRUE; else return FALSE; } /*若链队列Q存在,则当Q非空时,返回队头元素e */ Status QueueGetTop_Sl(LinkQueue Q,ElemType e) { if(!Q) return ERROR;/*

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档