diff --git a/_02.栈与队列/03链栈_LinkStack.c b/_02.栈与队列/03链栈_LinkStack.c deleted file mode 100644 index eab6b45..0000000 --- a/_02.栈与队列/03链栈_LinkStack.c +++ /dev/null @@ -1,145 +0,0 @@ -#include "stdio.h" -#include "stdlib.h" -#include "io.h" -#include "math.h" -#include "time.h" - -#define OK 1 -#define ERROR 0 -#define TRUE 1 -#define FALSE 0 -#define MAXSIZE 20 /* ´æ´¢¿Õ¼ä³õʼ·ÖÅäÁ¿ */ - -typedef int Status; -typedef int SElemType; /* SElemTypeÀàÐ͸ù¾Ýʵ¼ÊÇé¿ö¶ø¶¨£¬ÕâÀï¼ÙÉèΪint */ - - -/* Á´Õ»½á¹¹ */ -typedef struct StackNode -{ - SElemType data; - struct StackNode *next; -}StackNode,*LinkStackPtr; - - -typedef struct -{ - LinkStackPtr top; - int count; -}LinkStack; - -Status visit(SElemType c) -{ - printf("%d ",c); - return OK; -} - -/* ¹¹ÔìÒ»¸ö¿ÕÕ»S */ -Status InitStack(LinkStack *S) -{ - S->top = (LinkStackPtr)malloc(sizeof(StackNode)); - if(!S->top) - return ERROR; - S->top=NULL; - S->count=0; - return OK; -} - -/* °ÑSÖÃΪ¿ÕÕ» */ -Status ClearStack(LinkStack *S) -{ - LinkStackPtr p,q; - p=S->top; - while(p) - { - q=p; - p=p->next; - free(q); - } - S->count=0; - return OK; -} - -/* ÈôÕ»SΪ¿ÕÕ»£¬Ôò·µ»ØTRUE£¬·ñÔò·µ»ØFALSE */ -Status StackEmpty(LinkStack S) -{ - if (S.count==0) - return TRUE; - else - return FALSE; -} - -/* ·µ»ØSµÄÔªËØ¸öÊý£¬¼´Õ»µÄ³¤¶È */ -int StackLength(LinkStack S) -{ - return S.count; -} - -/* ÈôÕ»²»¿Õ£¬ÔòÓÃe·µ»ØSµÄÕ»¶¥ÔªËØ£¬²¢·µ»ØOK£»·ñÔò·µ»ØERROR */ -Status GetTop(LinkStack S,SElemType *e) -{ - if (S.top==NULL) - return ERROR; - else - *e=S.top->data; - return OK; -} - -/* ²åÈëÔªËØeΪеÄÕ»¶¥ÔªËØ */ -Status Push(LinkStack *S,SElemType e) -{ - LinkStackPtr s=(LinkStackPtr)malloc(sizeof(StackNode)); - s->data=e; - s->next=S->top; /* °Ñµ±Ç°µÄÕ»¶¥ÔªËظ³Öµ¸øÐ½áµãµÄÖ±½Óºó¼Ì£¬¼ûͼÖТ٠*/ - S->top=s; /* ½«ÐµĽáµãs¸³Öµ¸øÕ»¶¥Ö¸Õ룬¼ûͼÖÐ¢Ú */ - S->count++; - return OK; -} - -/* ÈôÕ»²»¿Õ£¬Ôòɾ³ýSµÄÕ»¶¥ÔªËØ£¬ÓÃe·µ»ØÆäÖµ£¬²¢·µ»ØOK£»·ñÔò·µ»ØERROR */ -Status Pop(LinkStack *S,SElemType *e) -{ - LinkStackPtr p; - if(StackEmpty(*S)) - return ERROR; - *e=S->top->data; - p=S->top; /* ½«Õ»¶¥½áµã¸³Öµ¸øp£¬¼ûͼÖÐ¢Û */ - S->top=S->top->next; /* ʹµÃÕ»¶¥Ö¸ÕëÏÂÒÆÒ»Î»£¬Ö¸ÏòºóÒ»½áµã£¬¼ûͼÖÐ¢Ü */ - free(p); /* ÊͷŽáµãp */ - S->count--; - return OK; -} - -Status StackTraverse(LinkStack S) -{ - LinkStackPtr p; - p=S.top; - while(p) - { - visit(p->data); - p=p->next; - } - printf("\n"); - return OK; -} - -int main() -{ - int j; - LinkStack s; - int e; - if(InitStack(&s)==OK) - for(j=1;j<=10;j++) - Push(&s,j); - printf("Õ»ÖÐÔªËØÒÀ´ÎΪ£º"); - StackTraverse(s); - Pop(&s,&e); - printf("µ¯³öµÄÕ»¶¥ÔªËØ e=%d\n",e); - printf("Õ»¿Õ·ñ£º%d(1:¿Õ 0:·ñ)\n",StackEmpty(s)); - GetTop(s,&e); - printf("Õ»¶¥ÔªËØ e=%d Õ»µÄ³¤¶ÈΪ%d\n",e,StackLength(s)); - ClearStack(&s); - printf("Çå¿ÕÕ»ºó£¬Õ»¿Õ·ñ£º%d(1:¿Õ 0:·ñ)\n",StackEmpty(s)); - getchar(); - return 0; -} \ No newline at end of file diff --git a/_02.栈与队列/_c.链栈.c b/_02.栈与队列/_c.链栈.c index 1c733d7..8a2f17d 100644 --- a/_02.栈与队列/_c.链栈.c +++ b/_02.栈与队列/_c.链栈.c @@ -2,7 +2,7 @@ * @Author: Xu Bai * @Date: 2019-07-01 21:32:41 * @LastEditors: Xu Bai - * @LastEditTime: 2019-07-01 22:12:36 + * @LastEditTime: 2019-07-01 22:24:11 */ #include "stdio.h" #include "stdlib.h" @@ -58,6 +58,7 @@ Status ClearStack(LinkStack *S) free(q); } S->count = 0; + S->top = NULL; //debug return OK; } diff --git a/a.out b/a.out index 3fc0a2c..604019a 100644 Binary files a/a.out and b/a.out differ