数据结构关联表——如何创建头键值对?
data structure association list - how to create head key value pairs?
我有一个关于数据结构关联列表/单链表的问题,它只添加到头部。
set 函数假设设置(多个)键值对,get 函数应该得到这些对——我不明白如何制作 head(一开始假设为 null)
成为一个对象,并且由于新创建的节点成为 'new' 头 - 我不明白我如何 'move' 'old' 头及其键值对..
很高兴有任何帮助!谢谢!
这是我的代码(不多但完全不知道如何从这里开始)
function List () {
this.head=null;
}
function ListN (key, value, next) {
this.key = key;
this.value = value;
this.next = next;
}
Alist.prototype.set = function (key, value) {
// this.key=value;
var newNode=new ListN(key, value);
this.head=newNode;
};
Alist.prototype.get = function (key) {
return this.key;
};
smallList = new List();
在一个键值对象中,你应该总是有一个键,所以使用 KISS 原则:
var object = {};
object['aKey'] = 'some value';
object['otherKey] = 'other value';
如果您想要存储对象,请使用数组:
var myArray = [];
myArrray.push({'key': 'value'});
myArrray.push({'key': 'value'});
myArrray.push({'key1': 'value1'});
如果你想要一个键有很多值:
var object = {};
if(!object.hasOwnProperty('aKey')){
object['aKey'] = [];
}
object['aKey'].push('value');
Javascript 很简单,所以保持简单:)
你快到了。您错过了调用新 ListN 时的前一个节点。
var newNode = new ListN(key, value, this.head);
// ^^^^^^^^^
function List() {
this.head = null;
}
List.prototype.set = function (key, value) {
function ListN(key, value, next) {
this.key = key;
this.value = value;
this.next = next;
}
var node = this.head;
while (node) {
if (node.key === key) {
node.value = value;
return;
}
node = node.next;
}
this.head = new ListN(key, value, this.head);
};
List.prototype.get = function (key) {
var node = this.head;
while (node) {
if (node.key === key) {
return node.value;
}
node = node.next;
}
};
var smallList = new List();
smallList.set('one', 'abc');
console.log(smallList);
smallList.set('two', 'def');
console.log(smallList);
console.log(smallList.get('one'));
console.log(smallList.get('two'));
console.log(smallList.get('three'));
smallList.set('two', 'xyz');
console.log(smallList);
我有一个关于数据结构关联列表/单链表的问题,它只添加到头部。 set 函数假设设置(多个)键值对,get 函数应该得到这些对——我不明白如何制作 head(一开始假设为 null) 成为一个对象,并且由于新创建的节点成为 'new' 头 - 我不明白我如何 'move' 'old' 头及其键值对.. 很高兴有任何帮助!谢谢!
这是我的代码(不多但完全不知道如何从这里开始)
function List () {
this.head=null;
}
function ListN (key, value, next) {
this.key = key;
this.value = value;
this.next = next;
}
Alist.prototype.set = function (key, value) {
// this.key=value;
var newNode=new ListN(key, value);
this.head=newNode;
};
Alist.prototype.get = function (key) {
return this.key;
};
smallList = new List();
在一个键值对象中,你应该总是有一个键,所以使用 KISS 原则:
var object = {};
object['aKey'] = 'some value';
object['otherKey] = 'other value';
如果您想要存储对象,请使用数组:
var myArray = [];
myArrray.push({'key': 'value'});
myArrray.push({'key': 'value'});
myArrray.push({'key1': 'value1'});
如果你想要一个键有很多值:
var object = {};
if(!object.hasOwnProperty('aKey')){
object['aKey'] = [];
}
object['aKey'].push('value');
Javascript 很简单,所以保持简单:)
你快到了。您错过了调用新 ListN 时的前一个节点。
var newNode = new ListN(key, value, this.head);
// ^^^^^^^^^
function List() {
this.head = null;
}
List.prototype.set = function (key, value) {
function ListN(key, value, next) {
this.key = key;
this.value = value;
this.next = next;
}
var node = this.head;
while (node) {
if (node.key === key) {
node.value = value;
return;
}
node = node.next;
}
this.head = new ListN(key, value, this.head);
};
List.prototype.get = function (key) {
var node = this.head;
while (node) {
if (node.key === key) {
return node.value;
}
node = node.next;
}
};
var smallList = new List();
smallList.set('one', 'abc');
console.log(smallList);
smallList.set('two', 'def');
console.log(smallList);
console.log(smallList.get('one'));
console.log(smallList.get('two'));
console.log(smallList.get('three'));
smallList.set('two', 'xyz');
console.log(smallList);