链表的实现

来源:互联网 发布:pdf转word 软件 编辑:程序博客网 时间:2024/05/18 00:03

《剑指offer》这本书里的实现方法,条理清晰,使用起来也很方便,所以直接拿来用了。

//list.h// 《剑指Offer——名企面试官精讲典型编程题》代码// 著作权所有者:何海涛struct ListNode{    int       m_nValue;    ListNode* m_pNext;};__declspec( dllexport ) ListNode* CreateListNode(int value);__declspec( dllexport ) void ConnectListNodes(ListNode* pCurrent, ListNode* pNext);__declspec( dllexport ) void PrintListNode(ListNode* pNode);__declspec( dllexport ) void PrintList(ListNode* pHead);__declspec( dllexport ) void DestroyList(ListNode* pHead);__declspec( dllexport ) void AddToTail(ListNode** pHead, int value);__declspec( dllexport ) void RemoveNode(ListNode** pHead, int value);


//list.cpp// 《剑指Offer——名企面试官精讲典型编程题》代码// 著作权所有者:何海涛#include "stdafx.h"#include "list.h"#include <stdio.h>#include <stdlib.h>ListNode* CreateListNode(int value){    ListNode* pNode = new ListNode();    pNode->m_nValue = value;    pNode->m_pNext = NULL;    return pNode;}void ConnectListNodes(ListNode* pCurrent, ListNode* pNext){    if(pCurrent == NULL)    {        printf("Error to connect two nodes.\n");        exit(1);    }    pCurrent->m_pNext = pNext;}void PrintListNode(ListNode* pNode){     if(pNode == NULL)    {        printf("The node is NULL\n");    }    else    {        printf("The key in node is %d.\n", pNode->m_nValue);    }}void PrintList(ListNode* pHead){    printf("PrintList starts.\n");        ListNode* pNode = pHead;    while(pNode != NULL)    {        printf("%d\t", pNode->m_nValue);        pNode = pNode->m_pNext;    }    printf("\nPrintList ends.\n");}void DestroyList(ListNode* pHead){    ListNode* pNode = pHead;    while(pNode != NULL)    {        pHead = pHead->m_pNext;        delete pNode;        pNode = pHead;    }}void AddToTail(ListNode** pHead, int value){    ListNode* pNew = new ListNode();    pNew->m_nValue = value;    pNew->m_pNext = NULL;    if(*pHead == NULL)    {        *pHead = pNew;    }    else    {        ListNode* pNode = *pHead;        while(pNode->m_pNext != NULL)            pNode = pNode->m_pNext;        pNode->m_pNext = pNew;    }}void RemoveNode(ListNode** pHead, int value){    if(pHead == NULL || *pHead == NULL)        return;    ListNode* pToBeDeleted = NULL;    if((*pHead)->m_nValue == value)    {        pToBeDeleted = *pHead;        *pHead = (*pHead)->m_pNext;    }    else    {        ListNode* pNode = *pHead;        while(pNode->m_pNext != NULL && pNode->m_pNext->m_nValue != value)            pNode = pNode->m_pNext;        if(pNode->m_pNext != NULL && pNode->m_pNext->m_nValue == value)        {            pToBeDeleted = pNode->m_pNext;            pNode->m_pNext = pNode->m_pNext->m_pNext;        }    }    if(pToBeDeleted != NULL)    {        delete pToBeDeleted;        pToBeDeleted = NULL;    }}




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 幼儿误吃粉笔怎么办? 吃了粉笔应该怎么办 小孩吃了颜料怎么办 小宝宝吃了纸怎么办 孩子不认真听讲怎么办 监控手机软件离线状态怎么办 云课堂忘记密码怎么办 广州办培训机构怎么办 一师一优课账号忘了怎么办 云相册空间不足怎么办 三星云空间不足怎么办 三星储存空间不足怎么办 宁阳县教育局强制补课怎么办 沉迷网络该怎么办英语 29岁沉迷游戏怎么办 学乐云登录不上怎么办 魔方学院无法识别怎么办 路由器卫士忘记密码怎么办 邮箱号忘记密码怎么办 水卡没钱了怎么办 旅行青蛙换手机怎么办 软件尚未受信任怎么办 百度搜不到的怎么办 百度中搜不到怎么办 山寨云网络异常怎么办 手机太重了怎么办 百度云网页版打不开怎么办 微鲸电视打不开怎么办 手机一直没信号怎么办 孩子作业效率低怎么办 员工做事效率低怎么办 吉他和弦转换慢怎么办 耳机低音轰头怎么办? 全民k歌太占内存怎么办 qq音乐登录失效怎么办 电视猫自动升级怎么办 酷狗账号注销怎么办 电脑监控老是坏怎么办 qq音乐qq登不上怎么办? 繁星工会解约不同意怎么办? dnf封号120小时怎么办