diff --git a/README.md b/README.md index 0bfe205..8858b9c 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,9 @@ - 顺序栈的基本操作 - 共享栈的基本操作 - 链栈的基本操作 + - 斐波那契数列 + - 循环队列的基本操作 + - 链队列的基本操作 - To be continued... diff --git a/_02.栈与队列/06链队列_LinkQueue.c b/_02.栈与队列/06链队列_LinkQueue.c deleted file mode 100644 index 655d55b..0000000 --- a/_02.栈与队列/06链队列_LinkQueue.c +++ /dev/null @@ -1,181 +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 QElemType; /* QElemType͸ʵΪint */ - -typedef struct QNode /* ṹ */ -{ - QElemType data; - struct QNode *next; -}QNode,*QueuePtr; - -typedef struct /* еṹ */ -{ - QueuePtr front,rear; /* ͷβָ */ -}LinkQueue; - -Status visit(QElemType c) -{ - printf("%d ",c); - return OK; -} - -/* һնQ */ -Status InitQueue(LinkQueue *Q) -{ - Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode)); - if(!Q->front) - exit(OVERFLOW); - Q->front->next=NULL; - return OK; -} - -/* ٶQ */ -Status DestroyQueue(LinkQueue *Q) -{ - while(Q->front) - { - Q->rear=Q->front->next; - free(Q->front); - Q->front=Q->rear; - } - return OK; -} - -/* QΪն */ -Status ClearQueue(LinkQueue *Q) -{ - QueuePtr p,q; - Q->rear=Q->front; - p=Q->front->next; - Q->front->next=NULL; - while(p) - { - q=p; - p=p->next; - free(q); - } - return OK; -} - -/* QΪն,򷵻TRUE,򷵻FALSE */ -Status QueueEmpty(LinkQueue Q) -{ - if(Q.front==Q.rear) - return TRUE; - else - return FALSE; -} - -/* еij */ -int QueueLength(LinkQueue Q) -{ - int i=0; - QueuePtr p; - p=Q.front; - while(Q.rear!=p) - { - i++; - p=p->next; - } - return i; -} - -/* в,eQĶͷԪ,OK,򷵻ERROR */ -Status GetHead(LinkQueue Q,QElemType *e) -{ - QueuePtr p; - if(Q.front==Q.rear) - return ERROR; - p=Q.front->next; - *e=p->data; - return OK; -} - - -/* ԪeΪQµĶβԪ */ -Status EnQueue(LinkQueue *Q,QElemType e) -{ - QueuePtr s=(QueuePtr)malloc(sizeof(QNode)); - if(!s) /* 洢ʧ */ - exit(OVERFLOW); - s->data=e; - s->next=NULL; - Q->rear->next=s; /* ӵԪe½sֵԭβḷ́ͼТ */ - Q->rear=s; /* ѵǰsΪβ㣬rearָsͼТ */ - return OK; -} - -/* в,ɾQĶͷԪ,eֵ,OK,򷵻ERROR */ -Status DeQueue(LinkQueue *Q,QElemType *e) -{ - QueuePtr p; - if(Q->front==Q->rear) - return ERROR; - p=Q->front->next; /* ɾĶͷݴpͼТ */ - *e=p->data; /* ɾĶͷֵֵe */ - Q->front->next=p->next;/* ԭͷĺp->nextֵͷ̣ͼТ */ - if(Q->rear==p) /* ͷǶβɾrearָͷ㣬ͼТ */ - Q->rear=Q->front; - free(p); - return OK; -} - -/* ӶͷβζԶQÿԪ */ -Status QueueTraverse(LinkQueue Q) -{ - QueuePtr p; - p=Q.front->next; - while(p) - { - visit(p->data); - p=p->next; - } - printf("\n"); - return OK; -} - -int main() -{ - int i; - QElemType d; - LinkQueue q; - i=InitQueue(&q); - if(i) - printf("ɹعһն!\n"); - printf("ǷնУ%d(1: 0:) ",QueueEmpty(q)); - printf("еijΪ%d\n",QueueLength(q)); - EnQueue(&q,-5); - EnQueue(&q,5); - EnQueue(&q,10); - printf("3Ԫ(-5,5,10),еijΪ%d\n",QueueLength(q)); - printf("ǷնУ%d(1: 0:) ",QueueEmpty(q)); - printf("еԪΪ"); - QueueTraverse(q); - i=GetHead(q,&d); - if(i==OK) - printf("ͷԪǣ%d\n",d); - DeQueue(&q,&d); - printf("ɾ˶ͷԪ%d\n",d); - i=GetHead(q,&d); - if(i==OK) - printf("µĶͷԪǣ%d\n",d); - ClearQueue(&q); - printf("նк,q.front=%u q.rear=%u q.front->next=%u\n",q.front,q.rear,q.front->next); - DestroyQueue(&q); - printf("ٶк,q.front=%u q.rear=%u\n",q.front, q.rear); - - return 0; -} - diff --git a/_02.栈与队列/_f.链队列.c b/_02.栈与队列/_f.链队列.c index f55d9a2..01012a7 100644 --- a/_02.栈与队列/_f.链队列.c +++ b/_02.栈与队列/_f.链队列.c @@ -170,9 +170,8 @@ int main() printf("ɾ˶ͷԪ%d\n", e); QueueTraverse(q); ClearQueue(&q); - printf("նк,q.front=%u q.rear=%u q.front->next=%u\n",q.front,q.rear,q.front->next); - DestroyQueue(&q); - printf("ٶк,q.front=%u q.rear=%u\n",q.front, q.rear); + printf("նк,q.front=%u q.rear=%u q.front->next=%u\n", q.front, q.rear, q.front->next); + DestroyQueue(&q); + printf("ٶк,q.front=%u q.rear=%u\n", q.front, q.rear); getchar(); - } \ No newline at end of file