使用类构建链表
之前的文章C++链表的创建以及增删改查_tingtingli~~~的博客-CSDN博客是使用结构体struct来定义链表中的节点,在面试闪思科技的时候,面试官说这属于c语言的思想构建链表,而对于C++来说,没有充分的利用c++的特性。于是有了本篇使用类构建链表思路也很简单,本文只给出了创建链表和打印链表两种方法,其余方法和C++链表的创建以及增删改查_tingtingli~~~的博客-CSDN博客
·
之前的文章C++链表的创建以及增删改查_tingtingli~~~的博客-CSDN博客是使用结构体struct来定义链表中的节点,在面试闪思科技的时候,面试官说这属于c语言的思想构建链表,而对于C++来说,没有充分的利用c++的特性。
于是有了本篇 使用类构建链表
思路也很简单,本文只给出了创建链表和打印链表两种方法,其余方法和C++链表的创建以及增删改查_tingtingli~~~的博客-CSDN博客没有什么差别,大同小异
#include<iostream>
#include<vector>
using namespace std;
//节点类
class Node {
friend class List; //声明一个友元类,然后List类就可以对Node的私有成员进行操作
private:
int val; //val代表链表中节点的值
Node* next; //next代表链表中节点的下一节点指向
public:
Node(int val) { //节点的初始化,由于其下一节点的指向未知,所以指向nullptr
this->val = val;
this->next = nullptr;
}
};
//链表类
class List {
private:
Node* head; //head很重要,为了让外部不轻易的修改它的值,把head设为私有
public:
List() {
head = nullptr; //初始化List
}
void buildList(vector<int>& arr); //构建链表结构的函数
void showList(); //展示链表信息的函数
};
void List::buildList(vector<int>& arr) {
int n = arr.size();
if (n == 0) { //如果传入的arr为空,直接返回即可
return;
}
head = new Node(arr[0]); //先令head指向arr的第一个元素,然后再向后构建链表
Node* temp = head; //head代表链表的头部,我们操作链表需要直到链表的头部,才可以对整个链表中的节点进行操作,所有head不可以轻易改变,所以用temp来遍历链表中的节点
for (int i = 1; i < n; ++i) {
Node* newNode = new Node(arr[i]);
temp->next = newNode;
temp = temp->next; //放入一个节点后,一定要改变temp的指向,才可以插入下一个节点,否则会发生覆盖的情况
}
}
void List::showList() {
Node* temp = head;
while (temp != nullptr) { //打印链表中各节点的值
cout << temp->val << " ";
temp = temp->next;
}
cout << endl;
}
int main() {
vector<int> arr = { 1,2,3,4,5 };
List list;
list.buildList(arr);
list.showList();
return 0;
}

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)