基于visual Studio2013解决算法导论之022队列实现(基于链表)

来源:互联网 发布:好办软件是什么 编辑:程序博客网 时间:2024/05/29 16:29



题目

基于链表的队列实现


解决代码及点评

#include <stdio.h>#include <stdlib.h>#include <time.h>#include <malloc.h>#include<assert.h>typedef struct QNode{int nValue;struct QNode *pNext;}QNode, *PQNode;typedef struct {PQNode pHead;PQNode pTail;}LinkQueue;void Create(LinkQueue *pLink){PQNode pTmp = (PQNode)malloc(sizeof(QNode));pLink->pHead = pLink->pTail = pTmp;if (pLink == NULL){exit(0);}pLink->pHead->pNext = NULL;pLink->pHead->nValue = 0;}void EnQueue(LinkQueue *pLink, int nValue){PQNode pTmp = (PQNode)malloc(sizeof(QNode));pTmp->nValue = nValue;pTmp->pNext = NULL;pLink->pTail->pNext = pTmp;pLink->pTail = pTmp;}int DeQueue(LinkQueue *pLink){if (pLink->pHead == pLink->pTail){//队列为空printf("队列为空,无法出队!\n");}PQNode pTmp = pLink->pHead->pNext;pLink->pHead->pNext = pTmp->pNext;if (pLink->pTail == pTmp){//若队列中只有一个元素,则出队后要修改队尾指针pLink->pTail = pLink->pHead;}int nValue = pTmp->nValue;free(pTmp);pTmp = NULL;return nValue;}bool IsEmpty(LinkQueue *pLink){return pLink->pHead == pLink->pTail;}void DestroyQueue(LinkQueue *pLink){while (pLink->pHead != NULL){pLink->pTail = pLink->pHead->pNext;free(pLink->pHead);pLink->pHead = pLink->pTail;}}int main(){LinkQueue *pLink = (LinkQueue *)malloc(sizeof(LinkQueue));Create(pLink);int i;for (i = 0; i < 10; i++){EnQueue(pLink, i);}for (i = 0; i < 10; i++){printf("%d ", DeQueue(pLink));}DestroyQueue(pLink);system("pause");return 0;}


代码下载及其运行

代码下载地址:http://download.csdn.net/detail/yincheng01/6858815

解压密码:c.itcast.cn


下载代码并解压后,用VC2013打开interview.sln,并设置对应的启动项目后,点击运行即可,具体步骤如下:

1)设置启动项目:右键点击解决方案,在弹出菜单中选择“设置启动项目”


2)在下拉框中选择相应项目,项目名和博客编号一致

3)点击“本地Windows调试器”运行


程序运行结果








0 0
原创粉丝点击