C++构建链表

这篇博客详细介绍了如何使用C++构建链表,包括定义链表节点、构造链表类,以及实现插入、删除、获取指定位置元素和反转链表等操作。还提供了一个打印链表的非成员函数。

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

代码

头文件

LinkList.h

#ifndef LINKLIST_H
#define LINKLIST_H

#include <iostream>
#include <vector>

class LinkList {
   
	friend std::ostream &operator<<(std::ostream &out, const LinkList &L);
	friend LinkList* link2node2link(LinkList *obj);

public:
    struct ListNode {
   
        int val;
        ListNode *next;
        ListNode() : val(0), next(nullptr) {
   }
        ListNode(int x) : val(x), next(nullptr) {
   }
        ListNode(int x, ListNode* next) : val(x), next(next) {
   }
    };

    LinkList() {
   
        _dummyHead = new ListNode(0);
        _len = 0;
    }
    
	int get(int index) const;				// 取得链表第index个数的值
	void addAtHead(int val);				// 头插法
	void addAtTail(int val);				// 尾插法
	void addAtIndex(int index, int val);	// 在第index个数之后插入
	void deleteAtIndex(int index);			// 删除第index个数
	void reverseList();						// 反转链表

private:
    ListNode *_dummyHead;
    unsigned _len = 0;
};

int LinkList::get(int index) const {
   
    if (index < 0 || index > (_len - 1)) return -1;
    ListNode *cur = _dummyHead->next;
    while (index--) {
   
        cur = cur->next;
    }
    return cur->val;
}

void LinkList::addAtHead(int val) {
   
    ListNode *newNode = new ListNode(val);	// 用val创建新节点
    newNode->next = _dummyHead->next;		
    _dummyHead->next = newNode;
    ++_len
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值