链表初始化赋值以及插入
下面展示一些 代码
。
#include<iostream>
#include<stdlib.h>
//创建一个结构体来表示链表的结点类型
struct ListNode{
int val;
struct ListNode *next;
ListNode(int x):val(x),next(nullptr){}
};
using namespace std;
int main(){
struct ListNode *head, *p, *q, *t;
int i, n, a;
//输入要存放的数据
cin >> n;
//头指针初始化为空
head = nullptr;
for(int i = 1; i <= 8; i++){
//输入n个数
int a=i;
//动态申请以个空间,用来存放一个结点,并用临时指针p指向这个结点
p = new ListNode();
//将数据存储在当前data域中
p -> val = a;
//设置当前结点的后继指针为空,也就是当前的下一个结点为空
p -> next = nullptr;
if(head == nullptr){
//如果这是第一个创建的结点,则将头指针指向这个结点
head = p;
}else{
//如果不是第一个创建的结点,则将上一个结点的后继指针指向当前结点
q -> next = p;
}
//当前指针p也只向当前结点
q = p;
}
//====================== 插入操作 =======================
t = head;
cout << "请输入要插入的数:" << endl;
cin >> a;
while(t != nullptr){
//如果当前结点的下一个结点的值大于待插入的数字,则将数插入
if(t -> next -> val > a){
//动态申请一个空间,用来存放新增结点
p = new ListNode();
p -> val = a;
//新增结点的后继指针指向当前结点的后继指针所指向的结点
p -> next = t -> next;
//当前结的后继指针指向新增的结点
t -> next = p;
//插入完毕,退出循环
break;
}
//继续下一个结点
t = t -> next;
}
//输出链表中所有的数
t = head;
while(t != nullptr){
cout << t -> val << " ";
//继续下一个结点
t = t -> next;
}
return 0;
}