Tag: linked list

在队列中记录语音并将其发送到服务器

我正在开发语音应用程序。 我需要一个某种类型的缓冲队列,以便我在一个线程中连续记录,将缓冲区充满字节放入队列并传输到服务器,然后从队列中取出下一个缓冲区。 这是录音代码: Queue qArray = new LinkedList(); recordingThread = new Thread(new Runnable() { @Override public void run() { bData = new byte[BufferElements]; while (isRecording) { recorder.read(bData, 0, BufferElements); qArray.add(bData); if (AudioRecord.ERROR_INVALID_OPERATION != 0) { SendAudio(); } } } }, “AudioRecorder Thread”); recordingThread.start(); 但是在将它发送到服务器时,它仍然缺少少量的byte []数据 这是向服务器代码发送语音: try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost […]

指向Java LinkedList节点的指针

我在O(1)处将n个条目推送到Java LinkedList 。 我想稍后在O(1)删除几个独特的项目。 我想保留一个带有“指针”的数组到LinkedList的唯一节点,以便我以后可以删除它们。 有没有办法在LinkedList或任何其他Java类上做到这一点? 我尝试将迭代器存储到项目中。 所以我可以使用iter.remove() 。 但我明白当时列表中只能有一个迭代器。 我知道一个简单的解决方案可能是我自己实现链接列表。 但我宁愿使用LinkedList或其他已经实现的Java类。

Java中的链表有快速连接方法吗?

如何通过jdk1.6,google或apache commons集合或其他任何方式将O(1)中的两个链接列表与Java连接起来? 例如,在jdk中,只有addAll方法是O(n)。 我想念的另一个function是连接两个列表,其中每个列表可能是相反的顺序。 为了说明这一点,假设两个列表a-> b-> c和e-> f-> g可以合并到 A-> B-> C-> E-> F->克 A-> B-> C-> G-> F->电子 C-> B-> A-> E-> F->克 C-> B-> A-> G-> F->电子 你知道这样的列表实现还是我必须实现自己的链表? 了解如何调整现有解决方案也很有帮助(例如,jdk LinkedList只有很多私有方法)。 这些function在我看来非常明显,希望我不会错过一些愚蠢的东西。 正如MicSim指出的那样, 在Java中使用Merge两个列表的常量时间是相关的,但不是真正的重复! 现在的问题是: 是否有可能与其他集合库? 如何连续反转?

扭转双向链接列表

下面的方法反转了具有n个元素的双向链表。 我不明白这是如何工作的。 我添加了评论,如果我错了请纠正我。 我不确定遍历过程是如何工作的。 public void reverseDLL( ) { Node temp=head; //swap head and tail head=tail; // head now points to tail tail=temp; //tail points to head //traverse the list swapping prev and next fields of each node Node p=head; //create a node and point to head while(p!=null) //while p does not equal null { […]

Java中的循环LinkedList实现

这是一项任务。 我必须创建一个循环链表并删除列表中的每三个数字。 当我的程序到达列表的末尾时,它应该返回到头部并继续该过程,直到只剩下一个数字。 我在网上搜索了一些其他的参考书,但无法解决我的问题。 我发现的大多数参考文献都说如下: 除了循环列表没有结束这一事实外,它们与常规列表完全相同 或(取自我的教科书): 如果最后一个节点的后继节点是第一个节点,则单个链接列表循环链接 但这些并没有说明如何做到这一点。 我也试过使用我在这个网站上找到的一些代码,但这并没有清楚。 我可以创建一个列表(我不知道它是否是循环链表)并显示它,但元素的顺序很奇怪: 如果列表有6个数字,则列表为1,6,5,4,3,2。 如果列表有8个数字,则列表为1,8,7,6,5,4,3,2。 如果没有正确的列表,我可以正确删除。 以下代码有什么问题: public class LastNumberDemo { public static void main(String[] args) { LastNumberNode ll=new LastNumberNode(); System.out.println(“how long is the list: “); Scanner keyboard = new Scanner(System.in); int input = keyboard.nextInt(); if(input<=0) { System.out.println("no number to creat list"); } if(input==1) { System.out.println("The Last […]

Java Generics:包含generics的数组

可能重复: Java如何:通用arrays创建 错误通用数组创建 我的任务是编写Java中的哈希表,它必须适用于任何数据类型。 我写的代码规则如下: – 哈希表必须有一个数组作为底层数据结构,其大小在构造对象时确定 – 当发生冲突时,应该放置碰撞的元素到链表中,它包含哈希表中该索引(键)的所有元素 因此,对于底层数据类型,我创建了一个LinkedList类型的数组(自定义,而不是Java API LinkedList)。 private LinkedList[] table; 当然,问题是实例化这个数组。 以下是我的一些尝试: public HashTable(int size) { table = new LinkedList[size]; } 这会引发编译时generics数组创建错误。 public HashTable(int size) { table = (LinkedList[])(new Object[size]); } 这会在运行时导致ClassCastException错误( java.lang.Object无法强制转换为LinkedList )。 项目负责人也不确定如何处理这个问题。 有什么方法可以更改我的代码,以便哈希表仍然有一个数组作为其底层数据结构,并将冲突放在LinkedList中?

C#等价于java arraylist支持get,set和remove某些Index

我是一名Java程序员,之前我使用过Java ArrayList ,现在我想在C#中使用类似的东西。 我需要的一些选项在这个Java代码中: String[] strs = new String[]{“str1” , “str2” , “str3” , “str4”}; ArrayList arrayList = new ArrayList(35); arrayList.add(strs[0]); arrayList.add(strs[1]); arrayList.remove(0); arrayList.set(0, strs[2]); String s = (String) arrayList.get(1); 我使用了C# ArrayList和LinkedList ,但它们没有我需要的这些简单选项。 C#中是否有另一个选项支持使用索引访问对象,插入和删除某些索引?

插入Sorted LinkedList Java

我在下面有这个代码,我将一个新的整数插入到一个有序的LinkedList中,但我不认为这是“正确”的做事方式,因为我知道有单一的链表,指针指向下一个值和双链表指向下一个和上一个值的指针。 我试图使用Nodes来实现以下情况,但是Java正在导入这个导入org.w3c.dom.Node(文档对象模型),所以卡住了。 插入案例 插入空数组 如果要插入的值少于所有内容,请在开头插入。 如果要插入的值大于所有值,请插入最后一个。 如果值小于/大于LL中的某些值,则介于两者之间。 import java.util.*; public class MainLinkedList { public static void main(String[] args) { LinkedList llist = new LinkedList(); llist.add(10); llist.add(30); llist.add(50); llist.add(60); llist.add(90); llist.add(1000); System.out.println(“Old LinkedList ” + llist); //WHat if you want to insert 70 in a sorted LinkedList LinkedList newllist = insertSortedLL(llist, 70); System.out.println(“New LinkedList ” + […]

Java LinkedList上一个下一个

是什么类似.Net的LinkedListNode<(Of )>)..::.Next和LinkedListNode<(Of )>)..::.Previous Java的java.util.LinkedList LinkedListNode<(Of )>)..::.Previous属性。

迭代地反转单链表

必须是O(n)和就地(空间复杂度为1)。 下面的代码确实有效,但有更简单或更好的方法吗? public void invert() { if (this.getHead() == null) return; if (this.getHead().getNext() == null) return; //this method should reverse the order of this linked list in O(n) time Node prevNode = this.getHead().getNext(); Node nextNode = this.getHead().getNext().getNext(); prevNode.setNext(this.getHead()); this.getHead().setNext(nextNode); nextNode = nextNode.getNext(); while (this.getHead().getNext() != null) { this.getHead().getNext().setNext(prevNode); prevNode = this.getHead().getNext(); this.getHead().setNext(nextNode); if (nextNode != […]