小说网 找小说 无限小说 烟雨红尘 幻想小说 酷文学 深夜书屋

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




题目

基于链表的队列实现


解决代码及点评

#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调试器”运行


程序运行结果









posted on 2014-01-17 16:36  牛栏山1  阅读(99)  评论(0编辑  收藏  举报

导航