b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

C语言单向链表的实现

电脑杂谈  发布时间:2020-03-31 19:15:01  来源:网络整理

c/c++链表_c 链表实现_实现链表

用VS2013编辑器编写的C语言单向链接列表代码:

#include

#include

typedef int TypeData;

#define NODE_LENGTH sizeof(NODE)

/ **定义链接列表的结构* /

typedef struct tagNode

{

TypeData tdData;

struct tagNode * plNext;

} NODE;

/ *******函数声明**************************** /

节点* createList(TypeData tdInData);

int forEachList(NODE * pstInHead);

int insertListTail(节点* pstInHead,TypeData tdInData);

int insertListHead(NODE * pstInHead,TypeData tdInData);

int getListLength(NODE * pstInHead);

int delListHead(NODE * pstInHead);

int delListTail(NODE * pstInHead);

int sortList(节点* pstInHead,int nInFlag);

int clearList(NODE * pstInHead);

/ *********************************************

功能功能: 创建一个新的链表,以牵头节点

函数输入参数: tdInData标头节点的值

返回值: 非NULL成功

NULL失败

********************************************** /

节点* createList(TypeData tdInData)

{

NODE * pstNewNode =(NODE *)malloc(NODE_LENGTH);

如果(NULL == pstNewNode)

{

printf(“ createList: malloc失败”);

返回NULL;

}

pstNewNode-> plNext = NULL;

pstNewNode-> tdData = tdInData;

返回pstNewNode;

}

/ *********************************************

函数功能: 遍历整个链表并显示链表的值,

函数输入参数: pstInHead链表的头节点

返回值: 0成功

1个失败

********************************************** /

int forEachList(节点* pstInHead)

{

如果(NULL == pstInHead)

{

printf(“ forEachList: 参数pstInHead为NULL”);

返回1;

}

while(NULL!= pstInHead-> plNext)

{

printf(“%d->”,pstInHead-> tdData);

pstInHead = pstInHead-> plNext;

}

printf(“%d \ n”,pstInHead-> tdData);

返回0;

}

/ *********************************************

功能功能: 在链接列表的末尾插入数据

函数输入参数: pstInHead链表的头节点

tdInData在末尾插入数据值

实现链表_c/c++链表_c 链表实现

返回值: 0成功

1个失败

********************************************** /

int insertListTail(节点* pstInHead,TypeData tdInData)

{

如果(NULL == pstInHead)

{

printf(“ insertListTail: 参数pstInHead为NULL”);

返回1;

}

while(NULL!= pstInHead-> plNext)

{

pstInHead = pstInHead-> plNext;

}

NODE * pstNewNode =(NODE *)malloc(NODE_LENGTH);

如果(NULL == pstNewNode)

{

printf(“ insertListTail: malloc pstNewNode失败”);

返回1;

}

pstNewNode-> plNext = NULL;

pstNewNode-> tdData = tdInData;

pstInHead-> plNext = pstNewNode;

返回0;

}

/ *********************************************

功能功能: 在链表的开头插入数据,即在开头节点之后插入数据

函数输入参数: pstInHead链表的头节点

tdInData在末尾插入数据值

返回值: 0成功

1个失败

********************************************** /

int insertListHead(节点* pstInHead,TypeData tdInData)

{

如果(NULL == pstInHead)

{

printf(“ insertListHead: 参数pstInHead为NULL”);

返回1;

}

NODE * pstNewNode =(NODE *)malloc(NODE_LENGTH);

如果(NULL == pstNewNode)

{

printf(“ insertListTail: malloc pstNewNode失败”);

返回1;

}

pstNewNode-> tdData = tdInData;

/ **将此节点插入头部* /

pstNewNode-> plNext = pstInHead-> plNext;

pstInHead-> plNext = pstNewNode;

返回0;

}

/ *********************************************

功能功能: 删除头节点

函数输入参数: pstInHead链表的头节点

返回值: 0成功

1个失败

********************************************** /

int delListHead(NODE * pstInHead)

{

如果(NULL == pstInHead)

{

printf(“ delListHead: 参数pstInHead为NULL”);

返回1;

}

c/c++链表_c 链表实现_实现链表

int nListLen = getListLength(pstInHead);

节点* pstTempNode = NULL;

/ **仅当链接列表的长度至少为2时才能删除头部* /

如果(nListLen> = 2)

{

pstTempNode = pstInHead-> plNext;

pstInHead-> plNext = pstInHead-> plNext-> plNext;

免费(pstTempNode);

}

返回0;

}

/ *********************************************

函数功能: 获取链表的长度,包括头节点

函数输入参数: pstInHead链表的头节点

返回值: 0成功

1个失败

********************************************** /

int getListLength(NODE * pstInHead)

{

int nLen = 0;

如果(NULL == pstInHead)

{

printf(“ getListLength: 参数pstInHead为NULL”);

返回1;

}

while(NULL!= pstInHead)

{

nLen ++;

pstInHead = pstInHead-> plNext;

}

返回nLen;

}

/ *********************************************

功能功能: 删除链表的末端节点

函数输入参数: pstInHead链表的头节点

返回值: 0成功

1个失败

********************************************** /

int delListTail(节点* pstInHead)

{

如果(NULL == pstInHead)

{

printf(“ delListTail: 参数pstInHead为NULL”);

返回1;

}

int nListLen = getListLength(pstInHead);

/ **如果仅直接返回头节点* /

如果(1 == nListLen)

{

返回0;

}

while(NULL!= pstInHead-> plNext-> plNext)

{

pstInHead = pstInHead-> plNext;

}

节点* pstTempNode = pstInHead-> plNext;

pstInHead-> plNext = NULL;

免费(pstTempNode);

返回0;

}

/ *********************************************

功能功能: 对整个链表进行排序,头节点不参与排序

函数输入参数: pstInHead链表的头节点

nInFlag 0下降,1上升

实现链表_c/c++链表_c 链表实现

返回值: 0成功

1个失败

********************************************** /

int sortList(节点* pstInHead,int nInFlag)

{

如果(NULL == pstInHead)

{

printf(“ sortList: 参数pstInHead为NULL”);

返回1;

}

int nListLen = getListLength(pstInHead);

/ **如果只有头节点,则不需要比较c 链表实现,请直接返回* /

如果(1 == nListLen)

{

返回0;

}

节点* pstTempNode = NULL;

pstInHead = pstInHead-> plNext;

TypeData tdTempData = 0;

/ **如果订单为肯定订单* /

如果(0 == nInFlag)

{

while(NULL!= pstInHead-> plNext)

{

pstTempNode = pstInHead-> plNext;

while(NULL!= pstTempNode)

{

如果(pstInHead-> tdData> pstTempNode-> tdData)

{

tdTempData = pstInHead-> tdData;

pstInHead-> tdData = pstTempNode-> tdData;

pstTempNode-> tdData = tdTempData;

}

pstTempNode = pstTempNode-> plNext;

}

pstInHead = pstInHead-> plNext;

}

}

/ **如果顺序相反* /

否则(1 == nInFlag)

{

while(NULL!= pstInHead-> plNext)

{

pstTempNode = pstInHead-> plNext;

while(NULL!= pstTempNode)

{

如果(pstInHead-> tdData tdData)

{

tdTempData = pstInHead-> tdData;

pstInHead-> tdData = pstTempNode-> tdData;

pstTempNode-> tdData = tdTempData;

}

pstTempNode = pstTempNode-> plNext;

}

pstInHead = pstInHead-> plNext;

}

}

其他

{

printf(“您的选择有误. 请输入(0 | 1)\ n”);

}

返回0;

}

/ *********************************************

c 链表实现_c/c++链表_实现链表

功能功能: 清除整个链表

函数输入参数: pstInHead链表的头节点

返回值: 0成功

1个失败

********************************************** /

int clearList(NODE * pstInHead)

{

如果(NULL == pstInHead)

{

printf(“ clearList: 参数pstInHead为NULL”);

返回1;

}

int nListLen = getListLength(pstInHead);

/ **临时链接列表的头节点* /

节点* pstTempHead = pstInHead;

/ **如果仅直接返回头节点* /

如果(1 == nListLen)

{

返回0;

}

节点* pstTempNode = NULL;

pstInHead = pstInHead-> plNext;

while(NULL!= pstInHead)

{

pstTempNode = pstInHead;

pstInHead = pstInHead-> plNext;

免费(pstTempNode);

}

pstTempHead-> plNext = NULL;

返回0;

}

int main()

{

节点* pstListHead = createList(-1);

/ **测试头和尾部功能* /

insertListTail(pstListHead,11);

insertListTail(pstListHead,12);

insertListTail(pstListHeadc 链表实现,13);

insertListTail(pstListHead,5);

insertListHead(pstListHead,22);

/ **遍历整个链表* /

forEachList(pstListHead);

/ **测试删除头节点* /

delListHead(pstListHead);

forEachList(pstListHead);

/ **测试删除尾节点* /

delListTail(pstListHead);

forEachList(pstListHead);

/ **测试空白列表* /

clearList(pstListHead);

forEachList(pstListHead);

/ **测试头和尾部功能* /

insertListTail(pstListHead,101);

insertListTail(pstListHead,2);

insertListTail(pstListHead,76);

insertListTail(pstListHead,43);

insertListHead(pstListHead,22);

insertListHead(pstListHead,333);

forEachList(pstListHead);

/ *测试肯定排序功能** /

sortList(pstListHead,0);

forEachList(pstListHead);

/ *测试反向排序功能** /

sortList(pstListHead,3);

forEachList(pstListHead);

系统(“暂停”);

返回0;

}


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-159191-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 何儒亮
        何儒亮

        尽快在南海建立军事设施

      • 李路
        李路

        我们是有了里子

      • 周仲美
        周仲美

        如果我们不趁机加强南海诸岛的军事存在

      热点图片
      拼命载入中...