双向链表怎么提高插队效率及实现倒排 5C

碰到个面试题,是关于双向链表插队效率的
具体题目要求是:
实现一个双向链表的倒置功能(1->2->3 变成 3->2->1) ,请勿直接使用jdk的linkedlist

请问大神们,有什么好的java实现?

2个回答

补充下,java版哈

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
用双向链表实现学生信息管理系统

老师布置的课设作业,要求用双向链表实现学生信息管理系统,学生信息包括学号,姓名,年龄,入学日期,电话等,实现增删改操作。。大神教教我吧,c++和java都可以,拜托![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/21.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/21.gif)![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/21.gif)

双向链表反转问题(c++)

``` void reverse() { node* pre = NULL; node* next = NULL; node* current = header->next; while (current != NULL) { next = current->next; current->next = pre; if (next == NULL) { header->next = current; current->pre = header; break; } pre = current; current->pre = next; current = next; } } ``` void reverse() { node* current = header->next; current->pre = NULL; while (current != NULL) { node* next = current->next; current->next = current->pre; if (next == NULL) { header->next = current; current->pre = header; break; } current->pre = next; current = next; } } ``` void addbegin(int val) { node* temp = new node(val, header,header->next); header->next = temp; } ``` 下面是node类的实现 ``` class node { public: int val; node* next; node* pre; node(){} node(int val, node* pre,node* next) { this->val = val; this->pre = pre; this->next = next; } }; ``` 上面是我实现的双向链表的反转链表的方法 但是第二种实现方法存在一些问题,在addbegin方法使用以后再使用第二种 reverse方法,则链表的反转会出现错误 例: 现有链表为 1 2 3 4 addbegin(0)后为 0 1 2 3 4 再使用第二种reverse() 链表为4 3 2 1 0 4 3 2 1 0 4 3 2 1 0······· 但是如果不使用addbegin方法 则第二种方法的反转是正常的。 请问 问题出在哪里,debug半天也没有找出问题 (第一种实现是完全正确的,header为头结点)

c++双向链表的创建及各种操作

怎么写有head,tail指针的双向链表的创建及数据输入的程序,也就是基于多态性的人员管理系统

Java语言如何实现双向链表的查找、插入、删除、排序呢

Java语言如何实现双向链表的查找、插入、删除、排序呢 Java语言如何实现双向链表的查找、插入、删除、排序呢

双向链表做学生管理系统?怎么实现???

双向链表做学生管理系统?怎么实现??跪求,各位大神指点迷津,谢谢

定义一个双向链表,并且设计一个函数,查找并且插入元素,保持链表有序排列

定义一个双向链表,并且设计一个函数,查找并且插入元素,保持链表有序排列

单链表、单循环链表和双向链表概念就是混

对于单链表、单循环链表和双向链表,如果仅仅知道一个指向链表中某个节点链表的指针P,能否将P所指结点的数据元素与其确实存在的直接前驱?请对每一中链表作出判断,若可以,写出程序段;否则说明理由。 单链表和循环链表的结点结构为: 双向链表的结点结构为:

线索二叉树,怎么可能把二叉树变为双向链表呢?

举例有中序遍历输出的树:HDIBJEAFCG。A为根节点,且B,C都是A的孩子。(意味着A的指针域lchild,rchild是存有指向B,C的指针的,那么也就意味着,当遍历到A的时候,是不可能为lchild和rchild添加“线索”的)。所以,怎么就能把树变为双向链表呢?而且书上还配了图:按HDIBJEAFCG的顺序,每个节点之间都画有双向箭头。理解不了

ARM开发中,用C语言 实现双向链表

各位前辈 你们好! 如题,我在ARM开发中,需要用到双向链表来管理接受到的数据。 我对双向链表不是很理解,在实际编程的时候遇到一些问题。 希望得到各位的帮助。 我本来打算用数组来做的。但是发现添加数据和删除数据都比较麻烦。 最后决定用双向链表来完成。 使用双向链表的目的 1,链表可以接受不超过64个的数据(结构体) 2,在链表中查询数据ID,可以进行添加和删除还有覆盖相同ID的数据 3,遍历链表中的数据ID,调用数据信息。 项目管理是一个外国人,我看他用链表不用malloc和free,我也想按照他的写法去找列子, 但是国内的列子都是有带malloc和free的。 因为时限快到了,我又学艺不精,所以向各位求教相应的信息或者实现的代码。 谢谢!

数据结构,在一个双向链表中删除一个元素的时间复杂度怎么计算?

数据结构,在一个双向链表中删除一个元素的时间复杂度怎么计算?

双向链表查找一个节点

如何写![图片](https://img-ask.csdn.net/upload/201703/17/1489682816_321452.jpg)

将两个递增的双向链表合并问题

将两个排好序的双向链表合并成一个,不允许有重复数据,链表1为1 2 3 4 6 链表2为5 6 8 9 10,合并后为1 2 3 4 6 8 9 10缺少了5,麻烦各位看一下是为什么啊? ``` // shiyan.cpp : 定义控制台应用程序的入口点。 // /* C program to insetail nodes in doubly linked list such that list remains in ascending order on printing from left to right */ #include "stdafx.h" #include <iostream> using namespace std; #include<stdio.h> #include<stdlib.h> #include<fstream> // A linked list node struct Node { int data; struct Node *prior; struct Node *next; }; // Function to insetail new node void nodeInsetail(struct Node **head, struct Node **tail,int key) { struct Node *p = new Node; p->data = key; p->next = NULL; // If first node to be insetailed in doubly linked list if ((*head) == NULL) { (*head) = p; (*tail) = p; (*head)->prior = NULL; return; } // If node to be insetailed has value less than first node if ((p->data) < ((*head)->data)) { p->prior= NULL; (*head)->prior = p; p->next = (*head); (*head) = p; return; } // If node to be insetailed has value more than last node if ((p->data) > ((*tail)->data)) { p->prior = (*tail); (*tail)->next = p; (*tail) = p; return; } // Find the node before which we need to insert p. struct Node *temp = new Node; temp = (*head)->next; while ((temp->data) < (p->data)) temp = temp->next; // Insert new node before temp (temp->prior)->next = p; p->prior= temp->prior; temp->prior = p; p->next = temp; } // Function to print nodes in from left to right void printList(struct Node *temp) { while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } } // Driver program to test above functions struct Node *head1=NULL; struct Node *tail1=NULL; struct Node *head2=NULL; struct Node *tail2=NULL; int _tmain(int argc, _TCHAR* argv[]) { int num[10]; int datalen=0; ifstream file("linklist.txt"); while( ! file.eof() ) file>>num[datalen++]; file.close(); for(int i=0;i<5;i++) { nodeInsetail(&head1, &tail1,num[i]); } printf("Doubly linked list1 is:"); printList(head1); printf("\n"); for(int j=5;j<10;j++) { nodeInsetail(&head2, &tail2,num[j]); } printf("Doubly linked list2 is:"); printList(head2); printf("\n"); Node *phead =head1;//最终返回的头数据节点 Node *p=head1->next;//p循环的是链表1 Node *q=head2;//q循环的是链表2 if(p->data > q->data) { phead = head2; p = head2->next; q = head1; } Node* s=phead;//记录新链表的最后一个节点,方便下一次接上新节点 while(p!=NULL && q!=NULL) { if(p->data < q->data) { s->next = p; p->prior=s; p = p->next; s = s->next; } else if(p->data = q->data) { s->next= p; p->prior=s; p=p->next; Node *x=q->next;//备用元素指向 free(q); q=x; } else if(p->data > q->data) { s->next = q; q->prior=s; q = q->next; s = s->next; } } if(p == NULL)//链表1先遍历完,说明另一链表还有数据得接过来 { s->next = q; q->prior=s; } if(q == NULL)//链表2先遍历完,因为此时主链表的结构已经发生变化,所以仍需拼接过来 { s->next = p; p->prior=s; } while(phead) { printf("%d ",phead->data); phead=phead->next; } return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201912/11/1576048566_174264.png)

c语言怎么把一个双向链表写入文件

用c语言这一个双向链表,然后用fwrite写入文件,用fread读取,这个过程和单链表是一样的吗?

各位大神求解!如何利用C++实现双向链表的相关操作

利用尾插法建立双向链表和遍历双向链表,判断双向链表是否对称。

利用双向链表和反三角的展开式高精度求π

要求利用c语言 利用双向链表和反三角的展开式高精度求π 用户输入一个整数n 高精度计算到小数点后的第n位 利用x=1/2时候 arcsinx=π/6求解 可以精确到小数点后500位 例如 5 3.14159 数据结构的 急求

数据结构双向链表中的问题~

设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink) ![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/1.gif)各位大神~初学者,求正确答案,和详细分析,![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/43.gif)

高分悬赏:Java语言数据结构怎么实现双向链表的冒泡排序呢

高分悬赏:Java语言数据结构怎么实现双向链表的冒泡排序呢 高分悬赏:Java语言数据结构怎么实现双向链表的冒泡排序呢

关于头插入法建立双向链表

//还没实现 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #define OK 1 typedef int elemtype; typedef int states; typedef struct DuLNode{ elemtype data; struct DuLNode *prior; struct DuLNode *next; }DuLNode,*DuLinkList; states create(DuLinkList &L){ DuLinkList p; L = (DuLinkList)malloc(sizeof(DuLNode)); L->next = NULL; L->prior = NULL; printf("please input the length of list:\n"); int n; scanf("%d",&n); for (int i = n; i > 0; i--){ p = (DuLinkList)malloc(sizeof(DuLNode)); printf("please input data of element No.%d\n", i); scanf("%d", &p->data); if (L->next = NULL){ L->next = p; p->prior = L; p->next = NULL; } else{ p->next = L->next; p->prior = L; L->next->prior = p; L->next = p; } } return OK; } void print(DuLinkList L){ DuLinkList p; p = L->next; printf("the linklist is like this:\n"); while (p){ printf("\t%d", p->data); p = p->next; } printf("\n"); } void main(){ DuLinkList L; create(L); print(L); system("pause"); } 实在不造哪里不对了。。。求助大神啊感激不尽!!! ``` ``` ``` ``` ``` ```

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

立方体线框模型透视投影 (计算机图形学实验)

计算机图形学实验 立方体线框模型透视投影 的可执行文件,亲测可运行,若需报告可以联系我,期待和各位交流

2019 AI开发者大会

2019 AI开发者大会

组成原理课程设计(实现机器数的真值还原等功能)

实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

软件测试2小时入门

软件测试2小时入门

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

计算机图形学-球的光照模型课程设计

计算机图形学-球的光照模型,有代码完美运行,有课程设计书

Linux常用命令大全(非常全!!!)

Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考: 系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 d...

因为看了这些书,我大二就拿了华为Offer

四年了,四年,你知道大学这四年我怎么过的么?

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

fakeLocation13.5.1.zip

fakeLocation13.5.1 虚拟定位 ios13.5.1的最新驱动下载,iPhone/iPad免越狱虚拟定位工具Location-cleaned驱动已更新

UnityLicence

UnityLicence

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

【数据结构与算法综合实验】欢乐连连看(C++ & MFC)案例

这是武汉理工大学计算机学院数据结构与算法综合实验课程的第三次项目:欢乐连连看(C++ & MFC)迭代开发代码。运行环境:VS2017。已经实现功能:开始游戏、消子、判断胜负、提示、重排、计时、帮助。

php+mysql学生成绩管理系统

学生成绩管理系统,分三个模块:学生,教师和管理员。 管理员模块:负责学生、老师信息的增删改;发布课程信息的增删改,以便让学生选课;审核老师提交的学生成绩并且打印成绩存档;按照课号查询每个课号的学生成绩

多功能数字钟.zip

利用数字电子计数知识设计并制作的数字电子钟(含multisim仿真),该数字钟具有显示星期、24小时制时间、闹铃、整点报时、时间校准功能

推荐24个国外黄色网站欣赏

在中国清朝,明黄色的衣服只有皇子才有资格穿,慢慢的黄色在中国就成了高贵的颜色。在人们的色彩印象中,黄色也表现为暂停。所以当你的网页设计采用黄色的时候,会让人们在你的网页前停留。 黄色,就像橙色和红色,黄色也是一个暖色。它有大自然、阳光、春天的涵义,而且通常被认为是一个快乐和有希望的色彩。黄色是所有色相中最能发光的颜色,给人轻快,透明,辉煌,充满希望的色彩印象。 黄色是一个高可见的色...

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

学生成绩管理系统(PHP + MYSQL)

做的是数据库课程设计,使用的php + MySQL,本来是黄金搭配也就没啥说的,推荐使用wamp服务器,里面有详细的使用说明,带有界面的啊!呵呵 不行的话,可以给我留言!

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

C++语言基础视频教程

C++语言基础视频教程

玩转Python-Python3基础入门

玩转Python-Python3基础入门

2019校招硬件乐鑫+比特大陆笔试题

楼主水硕一枚,参加了2019年的秋招。自己总结了下乐鑫的笔试题目(现场笔试)以及网上考试的比特大陆的题目

相关热词 c# 局部 截图 页面 c#实现简单的文件管理器 c# where c# 取文件夹路径 c# 对比 当天 c# fir 滤波器 c# 和站 队列 c# txt 去空格 c#移除其他类事件 c# 自动截屏
立即提问