ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c++单向链表

2021-09-22 16:02:25  阅读:102  来源: 互联网

标签:head ListNode int 单向 void List c++ next 链表



#include <iostream>
#include <set>
using namespace std;
class List {
public:
    List() {
        create_List();
        }
    ~List() {
        clear();
    }
    void create_List();
    void clear();
    void print();
    void reverse();
    void insert(const int &d);
    void add(const int& d);
private:
    struct ListNode {
        int val;
        ListNode* next;
        ListNode(const int& d) :val(d), next(nullptr) {}
    };

    ListNode* head;
};


void List:: clear() {
    
    ListNode* p = head;
    while (p)
    {
        ListNode* q = p->next;
        delete p;
        p = q;
    }
}

void List::insert(const int& d) {
    ListNode* p = new ListNode(d);
    p->next = head->next;
    head->next = p;
}


void List:: add(const int & d)
{
    ListNode* phead = head;
    while (phead->next)
    {
        phead = phead->next;
    }

    ListNode *p = new ListNode(d);
    phead->next = p;
}


void List::print() {
    for (ListNode* p = head->next; p; p = p->next) {
        cout << p->val << endl;
    }
}

void List::reverse() {
    ListNode* p = head->next;
    ListNode* q = head->next->next;
    ListNode* m = head->next->next->next;
    p->next = nullptr;
    while (m)
    {
        q->next = p;
        p = q;
        q = m;
        m = m->next;
    }
    q->next = p;
    head->next = q;
}

//创建头结点
void List::create_List(){
    head = new ListNode(0);
}


int main()
{
    List List;
   // List.insert(30);
    //List.insert(20);
   // List.insert(40);
    List.add(10);
    List.add(20);
    List.add(30);
    List.print();
    List.reverse();
   List.print();

    //test();
}


标签:head,ListNode,int,单向,void,List,c++,next,链表
来源: https://blog.csdn.net/weixin_44269952/article/details/120416756

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有