当前位置: 首页 > wzjs >正文

公司做营销网站英文seo

公司做营销网站,英文seo,大数据网站怎么做,qq官方官网入口题目 设计双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。 实现 MyLinkedList 类: MyLinkedList() 初始化 MyLinkedList 对象。int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效&…

题目

设计双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。

实现 MyLinkedList 类:

  • MyLinkedList() 初始化 MyLinkedList 对象。
  • int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1 。
  • void addAtHead(int val) 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完成后,新节点会成为链表的第一个节点。
  • void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。
  • void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。如果 index 等于链表的长度,那么该节点会被追加到链表的末尾。如果 index 比长度更大,该节点将 不会插入 到链表中。
  • void deleteAtIndex(int index) 如果下标有效,则删除链表中下标为 index 的节点。

思路

实现双向链表,即每个节点要存储本身的值,后继节点和前驱节点。除此之外,需要一个哨兵节点作为头节点 head 和一个哨兵节点作为尾节点 tail。仍需要一个 size 参数保存有效节点数。如下图所示。

img

初始化时,只需创建头节点 head 和 size 即可。

实现 get(index) 时,先判断有效性,然后再比较从 head 还是 tail 来遍历会比较快找到目标,然后进行遍历。如下图所示。

img


实现 addAtIndex(index, val) 时,如果 index 是有效值,则需要找到原来下标为 index 的节点 succ 和前驱节点 pred,并创建新节点 to_add,再通过各自 prev 和 next 变量的更新来增加to_add。最后需要更新 size。如以下两张图所示。

img

实现 addAtHead(val) 和 addAtTail(val) 时,可以借助 addAtIndex(index, val) 来实现。

实现 deleteAtIndex(index),先判断参数有效性。然后找到下标为 index 的节点的前驱节点 pred 和后继节点 succ,再通过各自 prev 和 next 变量的更新来删除节点,来达到删除节点的效果。同时也要更新 size。如下图所示。

img

class MyLinkedList {//双向链表int size;ListNode head;//虚拟头结点ListNode tail;//虚拟尾结点public MyLinkedList() {size = 0;head = new ListNode(0);tail = new ListNode(0);head.next = tail;//中间节点为空tail.prev = head;}public int get(int index) {if (index < 0 || index >= size) {return -1;}ListNode curr;//判断查询的位置在链表前半部分还是后半部分,节省循环if (index + 1 < size - index) {curr = head;//从头开始遍历for (int i = 0; i <= index; i++) {curr = curr.next;}} else {curr = tail;//从尾开始遍历for (int i = 0; i < size - index; i++) {curr = curr.prev;}}return curr.val;}public void addAtHead(int val) {addAtIndex(0, val);}public void addAtTail(int val) {addAtIndex(size, val);}public void addAtIndex(int index, int val) {if (index > size) {return;}index = Math.max(0, index);//插入位置负数,其插入位置在链表头ListNode pred, succ;//index前一个结点、后一个结点if (index < size - index) {pred = head;for (int i = 0; i < index; i++) {pred = pred.next;}succ = pred.next;} else {succ = tail;for (int i = 0; i < size - index; i++) {succ = succ.prev;}pred = succ.prev;}size++;ListNode toAdd = new ListNode(val);toAdd.prev = pred;toAdd.next = succ;pred.next = toAdd;succ.prev = toAdd;}public void deleteAtIndex(int index) {if (index < 0 || index >= size) {return;}ListNode pred, succ;if (index < size - index) {pred = head;for (int i = 0; i < index; i++) {pred = pred.next;}succ = pred.next.next;} else {succ = tail;for (int i = 0; i < size - index - 1; i++) {succ = succ.prev;}pred = succ.prev.prev;}size--;pred.next = succ;succ.prev = pred;}
}class ListNode {int val;ListNode next;//指向下一个结点指针ListNode prev;//指向前一个结点指针public ListNode(int val) {this.val = val;}
}

http://www.dtcms.com/wzjs/229555.html

相关文章:

  • 网站建设中关村搜索引擎排名优化方法
  • 江苏模板网站建设qq推广引流怎么做
  • 网站建设有几大板块香港疫情最新情况
  • 做外贸纱线用什么网站快速网站轻松排名哪家好
  • 做的网站有广告图片东莞网站建设推广平台
  • 网站开发创意设计百度资源
  • 建邺区住房 建设 网站关键词你们懂的
  • 合肥建设公司网站北京做网页的公司
  • 河南省住房和城乡建设厅网站首页十大新媒体平台有哪些
  • 广东网站设计的公司电商平台开发
  • 岳阳公司做网站seo优化设计
  • 河南专业网站建设公司哪家好简单的html网页制作
  • net源码的网站建设步骤学seo需要多久
  • 运营 网站兰州网络推广的平台
  • 营销型网站建设公司易网拓郑州百度搜索优化
  • 陕西网站建设电话百度推广平台
  • 保定商城网站建设com天堂网
  • 烟台网站排名seo如何做谷歌seo推广
  • 服装行业网站建设比较好外贸推广渠道有哪些
  • 扁平化网站后台武汉网站seo推广
  • 天津网站设计成功柚米长尾关键词挖掘
  • 牡丹江市建设工程交易中心网站php免费开源crm系统
  • 做网站需要做什么新闻最新头条10条
  • 做牙齿技工找工作去哪个网站搜索引擎的优化方法有哪些
  • 火蝠电商代运营值得相信吗太原关键词优化软件
  • 网站平台建设项目书sem竞价开户
  • 今日最新猪价最新seo教程
  • 上海营销型网站建设哪家好阿里云域名注册入口
  • 自己做网站平台需要服务器seo排名资源
  • 国外用tornado做的网站如何建网站赚钱