我还没有找到C#的实现,而且我发现其他语言的实现也不令人满意……需要提前知道节点数量,没有针对双链和单链进行过优化列表或其他效率低下,过于复杂的...我将发布自己的答案。
答案 0 :(得分:0)
这是我的解决方案。在我自己的代码中,此类中还有更多方法,以及一个伴随的标头类,但是我去除了除归并排序以外的所有内容。此实现假定列表的头和尾指向指向它们的头节点,并且空列表由头节点表示,而Next和Prev指向自身。 (这是一项经典技术,可以通过在头和尾使用空指针来简化操作。)
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-foo',
templateUrl: './foo.component.html',
styleUrls: ['./foo.component.css']
})
export class Foo implements OnInit {
constructor() { }
ngOnInit() {
}
display="none";
arrayBuffer:any;
file:File;
progress="0";
updateProgress(i,data){
this.progress = (100*i/data.length).toString();
return 1
}
incomingfile(event)
{
document.getElementById("uploadButton").setAttribute("disabled","true");
this.file= event.target.files[0];
let fileReader = new FileReader();
fileReader.onload = (e) => {
this.arrayBuffer = fileReader.result;
var data = new Uint8Array(this.arrayBuffer);
var arr = new Array();
for (var i = 0; i != data.length; ++i){
this.updateProgress(i,data);
arr[i] = String.fromCharCode(data[i]);
}
}
fileReader.readAsArrayBuffer(this.file);
this.display="block";
document.getElementById("uploadButton").removeAttribute("disabled");
}