去一公司面试,由于HR没说清地址,找到此公司可谓历经九九八十一难,终于找到,结果又等了面试的人半个到一小时的样子,一肚子火,本来想走的,后来想想来了看看情况吧!面试...[很墨迹],完了那哥们居然说去上机,还问我不介意吧,我说好吧...
那哥们摆弄了半天电脑终于把环境整好,给我题了:继承List做一个LinkedList实现add,remove,isEmpty,size功能。
憋了一肚子火,怎么也静不下心来。再者之前也很长时间没编码了,整了半天我也没做出来,也很郁闷!今天静下心来,实现了。主要代码如下:
写道
public class LinkedList extends LinkedListImpl{
public Node head;
public Node tail;
public int size;
@Override
public void add(Node node) {
// TODO Auto-generated method stub
node.front = this.tail;
node.next = null;
this.tail.next = node;
this.tail.front = this.tail;
this.tail = node;
this.size++;
}
@Override
public Object remove(int index) {
// TODO Auto-generated method stub
Node tmpNode = new Node();
tmpNode = this.head;
int tmp = 0;
while(tmpNode != null){
tmp++;
//当删除第一个元素时
if(index == 1){
this.head = tmpNode.next;
//list大小减1
this.size--;
break;
}
//当删除最后一个元素时
if(this.size() == index){
this.tail = this.tail.front;
this.tail.next = null;
//list大小减1
this.size--;
break;
}
//删除中间元素时
if(tmp == index){
tmpNode.front.next = tmpNode.next;
tmpNode.next.front = tmpNode.front;
//list大小减1
this.size--;
break;
}
tmpNode = tmpNode.next;
}
return null;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return this.head == null;
}
@Override
public int size() {
// TODO Auto-generated method stub
Node tmpNode = new Node();
tmpNode = this.head;
int count = 0;
while(tmpNode != null){
count++;
tmpNode = tmpNode.next;
}
return count;
}
附上实现在附件中。
分享到:
相关推荐
在这个“LinkedList的实现.zip”文件中,我们有三个头文件——Link.h、List.h和LinkedList,它们共同构成了LinkedList的数据结构及其操作的实现。 首先,`Link.h`通常会定义单链表中的节点结构。节点结构可能包括一...
在Java编程语言中,`LinkedList` 是一个常用的集合类,它实现了`List`接口,并且提供了额外的功能,如双端操作。本篇文章将探讨如何利用`LinkedList`来实现队列和栈这两种数据结构,以及其背后的原理和源码分析。 #...
首先,LinkedList实现了List接口,因此它是一个有序列表。它还实现了Deque接口,这意味着LinkedList支持双端队列的操作。除了这些接口之外,LinkedList还是Cloneable和java.io.Serializable的,表示它可以被克隆以及...
### List-LinkedList 单链表就地反转 #### 概述 本文主要介绍单链表的就地反转算法实现,并通过具体的C语言代码示例来解释这一过程。单链表是一种常见的线性数据结构,其中每个元素包含一个指向下一个元素的指针。...
.NET框架中的LinkList,实现的是双向链表,总结下它的实现源码。 LinkedList提供的公有属性和方法的导图
首先,LinkedList类位于Java的`java.util`包中,它实现了List接口,允许我们存储和操作一系列元素。LinkedList内部维护了一个双向链表,每个元素都是一个Node对象,包含元素值以及指向前后节点的引用。由于...
List接口中的一些关键方法包括add(), remove(), get()以及迭代器的使用。常见的List实现类有ArrayList和LinkedList。 **ArrayList类** `ArrayList`是基于数组实现的List,它提供了一个动态增长的数组来存储元素。...
List 接口提供了一个 listIterator() 方法,返回一个 ListIterator 接口,和标准的 Iterator 接口相比,ListIterator 多了一些 add() 之类的方法,允许添加、删除、设定元素,还能向前或向后遍历。 LinkedList、...
在本篇内容中,我们将探讨如何通过LinkedList实现栈和队列,以及它们在实际编程中的应用。 首先,栈是一种后进先出(LIFO,Last In First Out)的数据结构,常用于表达式求值、函数调用、回溯算法等场景。在...
由于实现了 List 接口和 Deque 接口,LinkedList 可以作为队列使用,如 `offer()`、`poll()`、`peek()` 等方法。 7. 双端队列操作: 作为 Deque,LinkedList 支持 `addFirst()`、`addLast()`、`offerFirst()`、`...
在Java集合框架中,`LinkedList`类是一种基于链表实现的线性数据结构,继承自`AbstractSequentialList`抽象类,并实现了`List`接口与`Deque`接口。由于其内部是通过双向链表来存储元素,因此在元素的增删操作上具有...
ArrayList和LinkedList是List接口的两种主要实现,它们各有优缺点,适用于不同的场景。此外,匿名类的概念在Java中用于简化代码结构,尤其是在实现接口时。 1. **List接口** List接口继承自Set接口,它不仅提供了...
List接口的实现类主要有ArrayList、LinkedList和Vector。 2. **ArrayList** - **实现原理**:ArrayList基于动态数组实现,它提供快速的按索引访问,因为数组支持直接通过索引获取元素。 - **添加和删除**:对于在...
本篇文章将深入探讨`List`集合的各种操作,包括增、删、改、查,以及`ArrayList`和`LinkedList`两种实现`List`接口的类之间的区别。同时,我们还将讨论如何利用`LinkedList`实现堆栈和队列的功能,并了解`List`集合...
在Java编程中,LinkedList是一个非常重要的数据结构,它实现了List接口,允许我们在列表的任何位置进行插入和删除操作。LinkedList内部使用双向链表实现,因此它的遍历速度比ArrayList快,但随机访问性能较差。本...
接下来,我们讨论Kotlin中的LinkedList实现。LinkedList是一种线性数据结构,其中元素通过节点链接在一起。每个节点包含一个值和指向下一个节点的引用: ```kotlin class Node(value: T) { var value: T = value ...
`LinkedList`是Java集合框架的一个重要组成部分,它基于双向链表实现,既支持`List`接口也实现了`Deque`接口,因此可以作为列表、栈或者队列使用。双向链表的每个节点包含一个数据元素以及前后两个指针,分别指向其...
对于提供的压缩包文件"itsmontoya-linkedlist-1aa2446",我们可以通过查看源代码来深入了解上述功能的具体实现,包括节点结构、链表操作方法的内部逻辑以及可能的优化策略。源代码通常会包含详细的注释和示例,帮助...