Day6 链表的基础操作I -卡码网C++基础课
题目链接:链表的基础操作I
题目描述
构建一个单向链表,链表中包含一组整数数据。输出链表中的所有元素。
要求:
1. 使用自定义的链表数据结构
2. 提供一个 linkedList 类来管理链表,包含构建链表和输出链表元素的方法
3. 在 main 函数中,创建一个包含一组整数数据的链表,然后调用链表的输出方法将所有元素打印出来
输入描述
包含多组测试数据,输入直到文件尾结束。
每组的第一行包含一个整数 n,表示需要构建的链表的长度。
接下来一行包含 n 个整数,表示链表中的元素。
输出描述
每组测试数据输出占一行。
按照顺序打印出链表中的元素,每个元素后面跟一个空格。
输入示例
5
1 2 3 4 5
6
3 4 5 6 7 8
输出示例
1 2 3 4 5
3 4 5 6 7 8
提示信息
数据范围:1 <= n <= 1000;
点击查看代码
#include<iostream>
using namespace std;
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr){}
};
int main(){
int n, val;
ListNode* dummyHead = new ListNode(0);
while(cin >> n){
ListNode* cur = dummyHead;
for(int i =0; i < n; i++){
cin >> val;
ListNode* newNode = new ListNode(val);
cur -> next = newNode;
cur = cur -> next;
}
cur = dummyHead;
while(cur -> next != NULL){
cout << cur -> next -> val << ' ';
cur = cur -> next;
}
cout << endl;
}
}
小结
指针
声明
int* p; //指向整数的指针
存地址
int* p = &x; //取地址符&获取地址
获取地址的值
int value = *p; //使用*符号来访问,解引用
数组与指针
数组名本质就是指向数组第一个元素的指针
int arr[3] = {1, 2, 3};
int *ptr = arr; // 数组名arr就是指向arr[0]的指针
指针还可以执行加法、减法等算术操作
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // 指向数组的第一个元素
int value = *(ptr + 2); // 获取数组的第三个元素(值为3)
空指针值(nullptr)
用于表示指针不指向任何有效的内存地址。
int *ptr = nullptr; // 初始化为空指针
链表
链表结构定义
struct ListNode {
int val; // 存储节点的数据
ListNode *next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(nullptr) {}
};
构造函数
ListNode(int x) : val(x), next(nullptr) {} // 构造函数,用于初始化节点, x接收数据作为数据域,next(nullptr)表示next指针为空
构造函数名称要和结构体相同
链表的插入
ListNode *newNode = new ListNode(val); // 通过new构造一个新的节点,节点的值为val
cur -> next = newNode; // cur节点的next节点是新节点,从而将新节点接入链表
cur = cur -> next;
new
在堆内存中动态分配内存空间,并返回分配内存的地址
->
通过指针访问指针所指向的对象的成员

浙公网安备 33010602011771号