`
lovnet
  • 浏览: 6987404 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

《多任务下的数据结构与算法》一书的勘误

阅读更多

目前发现的错误如下,相信书中还有许多问题未被发现,请大家发现新的错误及时提出,我会尽快修正的。

1、P52页 第15行 原文“返回0表示在HOOK数组中的序号” 修改后为“成功时返回在HOOK数组中的序号

2、P53页 第15行 原文“返回0表示在HOOK数组中的序号” 修改后为“成功时返回在HOOK数组中的序号

3、P164,P165页的Xcopy()函数代码有误,正确代码如下:

/**将一个目录及子目录下的所有文件复制到另外一个目录下

@paramchar *pszSrcDir - 要拷贝的源目录
@paramchar *pszTargeDir - 目标目录
@paramBOOL bOverWrite - 覆盖标志,FALSE表示覆盖
@returnvoid - 无
*/
void Xcopy( char *pszSrcDir, char *pszTargeDir, BOOL bOverWrite )
{
charlBaseSearch[MAX_PATH];
HANDLElhFile;
WIN32_FIND_DATAlfData;

sprintf( lBaseSearch, "%s\\*.*", pszSrcDir );
lhFile = FindFirstFile( lBaseSearch, &lfData );
if ( lhFile == INVALID_HANDLE_VALUE ) {
return;
}
do {
CreateDirectory( pszTargeDir, NULL );
if (!strcmp( lfData.cFileName, "." ) ||
!strcmp( lfData.cFileName, ".." )) {
/* 跳过 . and .. 不处理 */
continue;
}
if ( lfData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) {
/* 目录 */
charszBaseDir[MAX_PATH];
charszTargeDir[MAX_PATH];

sprintf( szBaseDir, "%s\\%s", pszSrcDir, lfData.cFileName );
sprintf( szTargeDir, "%s\\%s", pszTargeDir, lfData.cFileName );
Xcopy( szBaseDir, szTargeDir, bOverWrite );
}
else {
/* 普通文件 */
charszBaseDir[MAX_PATH];
charszTargeDir[MAX_PATH];

sprintf( szBaseDir, "%s\\%s", pszSrcDir, lfData.cFileName );
sprintf( szTargeDir, "%s\\%s", pszTargeDir, lfData.cFileName );

CopyFile( szBaseDir, szTargeDir, bOverWrite );
}
} while ( FindNextFile( lhFile, &lfData ));
FindClose( lhFile );
}

4、P335页 第13行 原文“发送操作会阻塞在哪里? 修改后为 “发送操作会阻塞在那里。

5、P203页 第22~29行 原文如下:

if ( pDelNode == pANode->pLeft )
{
pANode->nMagic -= 1;
}
else
{
pANode->nMagic += 1;
}
需要将这段代码移到P203页第9行和第10行之间,修改后的第9~21行代码为:

pNode->pData = pDelNode->pData;
if ( pDelNode == pANode->pLeft )
{
pANode->nMagic -= 1;
}
else
{
pANode->nMagic += 1;
}
if (pDelNode != pNode->pLeft)
{
pANode->pRight = pDelNode->pLeft;
}

6、P265页 倒数第7行 原文 "while (pCursor == NULL)"
需要在倒数第8行和倒数第7行之间插入以下两行代码:
if ( pCursor == NULL )
{
P266页第11行 原文“pData = pCursor->pData;”
需要在第10行和11行间插入一个右大括号 “}”

7P343页倒数第12原文 “for (i = 0; i < uSpaceCount; i++)”

改为: “for (i = 0; i < uSpaceCount - 1; i++)”

P343页倒数第5原文“ pNode->pNext = NULL;”
需要在倒数第5行后面插入一行 “pNode->uPos = uPos;”
8P3416原文 “UINT uHead;”
需要在第16行后插入一行 “void *pData;”
P34倒数第12行,原文“if ( pBlock->uHead == pBlock->uTail )”
需要在倒数第12行前插入以下一行代码:
pData = pBlock->ppData[uHead];
P34页倒数第3原文 “return pBlock->ppData[uHead];”
改为:“return pData;”
9、光盘CAPI目录下的DeQueue.c 文件中第146行(DeQue_Destroy()函数里)
原文:“for ( i = pQue->pFirst->uMapPos; i <= pQue->pLast->uMapPos; i++)”
改为以下四行代码:
UINT uStart, uEnd;
uStart = pQue->pFirst->uMapPos;
uEnd = pQue->pLast->uMapPos;
for ( i = uStart; i <= uEnd; i++)
10、光盘中CAPI目录下的DSpaceList.c文件中 (书中这段代码与光盘不一致,以光盘为准)
文件的第141行 原文pDSNode->uInListFlag = DSPACENODE_NOT_IN_LIST;”
需要在第140行和141行之间插入以下代码:
else
{
pList->pTail = NULL;
}
253原文 “if ( pDSNode->pSpList->uFreeCount == pList->uDataCount”
改为: “if ( pDSNode->pSpList->uFreeCount == pList->uDataCount - 1”
262行 原文 “/* 从双向链表中删除此节点 */”
需要在262行前插入以下两行代码
if ( pDSNode->uInListFlag == DSPACENODE_IN_LIST )
{
270行 原文“ if ( pList->pHead = pDSNode )”
改为: “if ( pList->pHead == pDSNode )”
278行 原文 “/* pDSNode加入到pEmpty为头节点的未使用链表中 */”
需在第278行前插入一个右大括号作为一行 “}”
11P111页倒数第9 原文 “memcpy(pNode->pData, pData, uDataLen);”
需要在倒数第9行前插入以下一行代码:
pNode->pData = (void *)((char *)pNode + sizeof(SINGLENODE));
12、光盘CAPI目录下的Queue.c 文件中第72行(Queue_Destroy()函数里)
原文: "if ( pQueue->uHead < pQueue->uTail )"
修改为:"if ( pQueue->uHead > pQueue->uTail )"

13
14、P8页倒数第6行,原文“sizeof(pszMsg)”,改为:“MSG_COUNT”
、光盘CAPI目录下的DeQue.c 文件中第57行(DeQueBlock_Destroy()函数里)
原文: "if ( pQueue->uHead < pQueue->uTail )"
修改:"if ( pQueue->uHead > pQueue->uTail )"
分享到:
评论

相关推荐

    数据结构原理与经典问题求解(源代码) + 勘误表

    总结来说,《数据结构原理与经典问题求解(源代码)+勘误表》是一本全面的参考书,它不仅为读者提供了理论知识,而且通过源代码示例和勘误表,使读者能够通过实践加深理解,并准确地掌握数据结构的原理和应用。...

    计算机体系结构-量化研究方法第三版 中文版

    这些教材覆盖了网络与通信、操作系统、计算机组织与结构、算法与数据结构、数据库与信息处理、编程语言、图形图像与多媒体、软件工程等多个学科方向,并且既有本科专业课程教材,也有研究生课程教材。这为不同院系、...

    数值方法(MATLAB版.第四版)-Mathews

    这些教材涵盖了网络与通信、操作系统、计算机组织与结构、算法与数据结构、数据库与信息处理、编程语言、图形图像与多媒体、软件工程等多个学科方向。出版社与国外知名出版公司如Pearson Education、麦格劳-希尔教育...

    勘误如下:在s = 13 $$ \ sqrt {s} = 13 $$ TeV的质子-质子碰撞中,寻找具有Z玻色子且缺少横向动量的事件中的暗物质和非粒子

    在高能物理实验中,数据分析是一项复杂而精细的任务。这包括信号处理、背景减除、统计分析等多个方面。为了从大量数据中提取有用的信息,研究人员通常会使用复杂的数学模型和算法,以及高性能计算资源。 ##### 4. ...

    XV6中文文档

    - 第五章“调度”探讨了操作系统中任务调度的策略和算法。 - 第六章“文件系统”介绍了文件系统的结构、文件操作的实现等重要内容。 此外,附录A和附录B分别详细介绍了PC硬件和引导加载器的内容,提供了底层硬件和...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     ·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素  ·举例说明如何使用mfc开发本地windows应用程序  ·指导读者用c++和c++/cli设计和创建大量的windows应用程序 ...

    programming in Scala_ch

    - **类型参数化**: 使用泛型来创建通用的数据结构和算法。 - **列表(List)**: 学习如何使用Scala中的列表数据结构。 - **元组(Tuple)**: 使用元组来组合多个值作为一个单一的实体。 - **集合(Set)和映射(Map)**: ...

Global site tag (gtag.js) - Google Analytics