链表C++ | 实现头部、尾部插入数据_1

头部插入

#include<iostream>

struct ListNode{
    int m_nValue;
    ListNode* m_pNext;
};

void AddToTop(ListNode** pHead, int Value)
{
    ListNode* pNew = new ListNode();
    pNew->m_nValue = Value;
    pNew->m_pNext = nullptr;

    if(*pHead == nullptr){
        *pHead = pNew;}
    else{
        pNew->m_pNext = *pHead;
        *pHead = pNew;}
}

void print(ListNode* pHead){
    printf("LinkedList is:\n");
    while(pHead!=nullptr)
    {
        printf("%d ",pHead->m_nValue);
        pHead = pHead->m_pNext;
    }
    printf("\n");
}

int main(){
    ListNode* pHead = nullptr;
    AddToTop(&pHead, 1);
    AddToTop(&pHead, 2);
    AddToTop(&pHead, 3);
    AddToTop(&pHead, 4);
    print(pHead);
}

运行输出:

尾部插入

#include<iostream>

struct ListNode{
    int m_nValue;
    ListNode* m_pNext;
};

void AddToTail(ListNode** pHead, int Value)
{
    ListNode* pNew = new ListNode();
    pNew->m_nValue = Value;
    pNew->m_pNext = nullptr;

    if(*pHead == nullptr){
        *pHead = pNew;}
    else{
        ListNode* pNode = *pHead;
        while(pNode->m_pNext != nullptr)
            pNode = pNode->m_pNext;
        pNode->m_pNext = pNew;}
}

void print(ListNode* pHead){
    printf("LinkedList is:\n");
    while(pHead!=nullptr)
    {
        printf("%d ",pHead->m_nValue);
        pHead = pHead->m_pNext;
    }
    printf("\n");
}

int main(){
    ListNode* pHead = nullptr;
    AddToTail(&pHead, 1);
    AddToTail(&pHead, 2);
    AddToTail(&pHead, 3);
    print(pHead);
}

运行结果:


算法和数据结构是程序的第一秘诀,缺之算法和数据结构是编程的最大原因。

猜你喜欢

转载自blog.csdn.net/sw3300255/article/details/85014729