模版插入

本文介绍了一种使用C++模板实现的链表插入排序算法。该算法能够对任意类型的链表进行排序,并提供了详细的实现代码。通过对节点进行比较并重新连接指针的方式实现了排序过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>  
using namespace std;  
template<typename T>  
struct Node  
{  
    T m_Data;  
    Node * m_pNext;  
};  
//插入排序  
template<typename T>  
bool InsertSort(Node<T> * & pHead)  
{  
    Node<T> * pCurNode = NULL;  
    Node<T> * pPrevNode = NULL;  
    Node<T> * pPrevNode2 = NULL;  
    Node<T> * pNextNode = NULL;  
    Node<T> * pTemp = NULL;  
    T tTemp;  
    if (pHead == NULL)  
        return false;  
    if (pHead->m_pNext == NULL)  
        return true;  
    for (pPrevNode = pHead,pCurNode = pHead->m_pNext; pCurNode;)  
    {  
        pNextNode = pCurNode->m_pNext;  
        tTemp = pCurNode->m_Data;  
        for (pTemp = pHead, pPrevNode2 = NULL; (pTemp != pCurNode) && (pTemp->m_Data <= tTemp); pPrevNode2 = pTemp, pTemp = pTemp->m_pNext);  
        if (pTemp != pCurNode)  
        {  
            if (pPrevNode2 == NULL)  
            {  
                //头结点  
                pPrevNode->m_pNext = pCurNode->m_pNext;  
                pCurNode->m_pNext = pTemp;  
                pHead = pCurNode;  
                pCurNode = pPrevNode->m_pNext;  
                continue;  
            }  
            //中间插入  
            pPrevNode2->m_pNext = pCurNode;  
            pCurNode->m_pNext = pTemp;  
            pPrevNode->m_pNext = pNextNode;  
            pCurNode = pNextNode;  
            continue;  
        }  
        pPrevNode = pCurNode;  
        pCurNode = pCurNode->m_pNext;  
    }  
    return true;  
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值