// C++

#include<iostream>
using namespace std; //链表的定义
struct ListNode
{
int val;
ListNode* next;
ListNode(int n) :val(n), next(nullptr) {}
}; //链表的打印
void printList(ListNode* head)
{
ListNode* pT = head;
while (pT != nullptr)
{
cout << pT->val << " ";
pT = pT->next;
}
} //链表的创建(头插法),注意打印时候倒着打印
ListNode* createListA(ListNode* head, int* arr, int len)
{
ListNode* pB = head;
for (int i = 0; i < len; ++i)
{
ListNode* pA = new ListNode(0); //注意:
pA->val = arr[i];
pA->next = pB->next;
pB->next = pA;
}
head = head->next; //不要初始的头结点,否则会打印出0
return head;
} //链表的创建(尾插法)
ListNode* createListB(ListNode* head, int* arr, int len)
{
ListNode* pB = head;
for (int i = 0; i < len; ++i)
{
ListNode* pA = new ListNode(0); //注意:
pA->val = arr[i];
pB->next = pA;
pB = pA;
}
head = head->next; //不要初始的头结点,否则会打印出0
pB->next = nullptr; //注意尾插法最后需要置空
return head;
} //链表节点的插入
void insertVarofList(ListNode* head, int pos, int val)
{
int cnt = 0;
ListNode* temp = new ListNode(val);
while (head != nullptr)
{
head = head->next;
++cnt;
if (cnt == pos)
{
temp->next = head->next; //注意:顺序不能改变
head->next = temp;
break;
}
}
} //链表节点的删除
void deleteValofList(ListNode* head, int pos)
{
int cnt = 0;
ListNode* temp = new ListNode(0);
while (head != nullptr)
{
head = head->next;
++cnt;
if (cnt == pos)
{
temp= head->next; //令temp指向被删除节点
head->next = temp->next;
delete temp;
break;
}
}
} int main()
{
int arr[] = { 10,15,96,18,2,22,6,2 };
ListNode* head = new ListNode(0);
ListNode* L = createListB(head, arr, 8);
printList(L);
cout << endl; insertVarofList(L, 3, 100);
printList(L);
cout << endl; deleteValofList(L, 3);
printList(L);
cout << endl; return 0;
}

【剑指Offer】链表的基本操作之创建、插入、删除的更多相关文章

  1. 【剑指offer】以o(1)复杂度删除啊链表的节点,C++实现(链表)

    0.简介       本文是牛客网<剑指offer>刷题笔记. 1.题目       在O(1)时间内删除链表节点. 2.思路         前提条件:删除的节点在链表上:边界条件:链表 ...

  2. 剑指Offer编程题(Java实现)——删除链表中重复的结点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  3. 剑指Offer 链表中倒数第k个结点

    题目描述 输入一个链表,输出该链表中倒数第k个结点.     思路: 法1:设置2个指针p,q.p先移动k次,然后pq同时后移,p到链表尾尾的时候,q指向倒数第k个节点. 注意://需要考虑k=0,以 ...

  4. 剑指offer——链表中倒数第k个结点

    输入一个链表,输出该链表中倒数第k个结点. class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned ...

  5. 剑指offer——python【第56题】删除链表中的重复节点

    题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...

  6. 《剑指offer》第十八题(删除链表中重复的结点)

    // 面试题18(二):删除链表中重复的结点 // 题目:在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重复 // 结点被删除之后,链表如图3.4(b)所示. #include &l ...

  7. 剑指Offer——链表中环的入口结点

    题目描述: 一个链表中包含环,请找出该链表的环的入口结点. 分析: 设置两个指针p1,p2, 两个指针都从链表的头部开始走,不过p1每次走一步,p2每次走两步. 直到相遇的时候,p2走的长度是p1的两 ...

  8. 剑指Offer——链表中倒数第k个节点

    Question 输入一个链表,输出该链表中倒数第k个结点. Solution 一种想法就是扫描两边,第一遍求出总的节点个数,第二遍从头开始走n-k个 第二种思想类似于fast-slow指针的方法,f ...

  9. 剑指offer——链表相关问题总结

    首先统一链表的数据结构为: struct ListNode { int val; struct ListNode *next; ListNode(int x) :val(x), next(NULL) ...

  10. python剑指offer 链表中环的入口节点

    题目: 一个链表中包含环,请找出该链表的环的入口结点. 思路: 先说个定理:两个指针一个fast.一个slow同时从一个链表的头部出发, fast一次走2步,slow一次走一步,如果该链表有环,两个指 ...

随机推荐

  1. 人社部新职业,Panda Global发现区块链新职业榜上有名!

    近日,为了助力新冠肺炎疫情的防控,扎实做好"六稳"工作,全面落实"六保"任务,促就业拓岗位,人力资源社会保障部联合市场监管总局.国家统计局近日正式向社会发布一批 ...

  2. MariaDB的安装及相关配置

    MariaDB的安装及相关配置 安装 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB systemctl start mar ...

  3. SpringBoot快速入门(理论篇)

    说在最前 此篇文章,为Spring Boot理论骗,所谓的理论篇就是几乎不会出现代码,只介绍一些理论知识,这些理论知识对你你以后快速上手Spring Boot有非常大的用处! 什么是Spring Bo ...

  4. 自定义radio、checkbox的样式

    input标签中的radio和checkbox是很表单中常用的类型,大多时候,默认样式并不能满足我们的需求,所以有了此篇. 自定义样式,由此开启: html: <div class=" ...

  5. Springboot 项目 无法读取resources下的mapper文件夹的.xml文件

    之前学习的时候遇到的一个问题 org.springframework.beans.factory.BeanCreationException: Error creating bean with nam ...

  6. 使用php进行微信小程序图片安全验证

    想用到微信公众平台的图片识别系统,结果报错{"errcode":41005,"errmsg":"media data missing hint: [x ...

  7. Python之matplotlib画图

    折线图: Matplotlib处理csv文件 这里写两个其他的. 柱状图,柱状图个人喜欢用pygal来画,有两篇文章 - Pygal之掷骰子 和 pygal之掷骰子 - 2颗面数为6的骰子.下面用ma ...

  8. Python字符串常用的一些东西

    字符串的常用方法dir(str).查看某一方法的用法help(str.xxx). 1,索引和切片: 2,len():查看字符串的总长度. 3,+,拼接一个或多个字符串. 4,in,判定字符是否在字符串 ...

  9. python之解压序列并赋值给变量

    N个数量的序列(可迭代对象),赋值给N个变量. 字符串: 1 #!usr/bin/env python3 2 # -*- Coding=utf-8 -*- 3 4 ''' 5 解压序列(或者任何可迭代 ...

  10. 分布式文件系统之 FastDFS

    FastDFS 百度百科 FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别适合 ...