class Nodetype
{
int info;
Nodetype next;
Nodetype(int i)
{
info=i;
next=null;
}
}
我的教科书有这个代ç 动æ€åˆ›å»ºé“¾æŽ¥åˆ—表。 问题是,当程åºé€è¡Œæ‰§è¡Œæ—¶ï¼Œå®ƒå°†å˜é‡'info'定义为类型'int'&然åŽå˜é‡'next'作为Nodetype。
这里到底å‘生了什么?
是å¦æ„味ç€å˜é‡'next'å°†åŒ…å« -
æˆ‘çœŸçš„å¾ˆçƒ¦ï¼Œå› ä¸ºæˆ‘æ— æ³•ç†è§£å®ƒæ˜¯å¦‚何工作的,有人å¯ä»¥è½»æ˜“解释一下å—?
ç”案 0 :(得分:3)
您的代ç éžå¸¸ç¬¦åˆåˆ—表的定义:列表为null
或åŽè·Ÿåˆ—è¡¨çš„å…ƒç´ ã€‚
åœ¨æ‚¨çš„æƒ…å†µä¸‹ï¼Œâ€œå…ƒç´ â€ç”±int
值定义,“åŽè·Ÿâ€éƒ¨åˆ†æ˜¯next
å˜é‡;在Javaå˜é‡ä¸ï¼ˆå½“它们ä¸æ˜¯æ–‡å—ï¼Œå› ä¸ºint
值是)实际上是指针,所以虽然它们没有被åˆå§‹åŒ–,但它们ä¸å˜å‚¨ä»»ä½•æœ‰æ•ˆå€¼ï¼Œå¹¶ä¸”它们ä¸æŒ‡å‘任何内å˜åŒºåŸŸï¼ˆå³å®ƒä»¬çš„值为null
ï¼‰ï¼Œå› æ¤å½“next
å˜é‡ä¿æŒåŽŸæ ·æ—¶ï¼Œæ‚¨çš„å…ƒç´ ä¸ä¼šè¢«ä»»ä½•å…¶ä»–å…ƒç´ è·Ÿéšã€‚è¦åŠ¨æ€åœ°å‘åˆ—è¡¨æ·»åŠ å…ƒç´ ï¼Œæ‚¨éœ€è¦ä¸€ä¸ªæŒ‡å‘æ‚¨æ·»åŠ çš„æœ€åŽä¸€ä¸ªå…ƒç´ 的指针,å¦åˆ™æ‚¨å°†æ— 法å†æ¬¡æ‰¾åˆ°å®ƒä»¬ï¼š
int i = 0;
Nodetype head = new Nodetype(i++);
Nodetype last = new Nodetype(i++);
head.next = last;
while (i<5) {
Nodetype temp = new Nodetype(i++);
last.next = temp;
last = temp;
}
while(head) {
System.out.println(head.info);
head = head.next;
}
请注æ„,在最åŽå‡ è¡Œä¸ï¼Œæ‚¨ä¸¢å¤±äº†head
æŒ‡é’ˆå¹¶ä¸”æ— æ³•è¿”å›žåˆ—è¡¨çš„èµ·ç‚¹ã€‚åœ¨ä½¿ç”¨åˆ—è¡¨æ—¶è¯·è®°ä½è¿™ä¸€ç‚¹;)
ç”案 1 :(得分:1)
第一个å˜é‡next
没有指å‘任何对象(它指å‘null
)。在æŸäº›æ—¶å€™ï¼Œæ‚¨å°†æŒ‡å‘å¦ä¸€ä¸ªnext = new NodeType(number)
çš„èŠ‚ç‚¹ã€‚è¿™ä¸ªæƒ³æ³•æ˜¯ä½ ä½¿ç”¨ç»„åˆ - ä½ æœ‰ä¸€ä¸ªç±»çš„å®žä¾‹ï¼Œå®ƒæœ‰ä¸€ä¸ªå¯¹å¦ä¸€ä¸ªå®žä¾‹çš„引用。就åƒnodeA
指å‘nodeB
,nodeB
指å‘nodeC
。这里有三个实例,第一个实例引用第二个实例,第二个实例引用第三个实例。第三个例å是最åŽä¸€ä¸ªï¼Œå…¶ä¸‹ä¸€ä¸ªå®žä¾‹æŒ‡å‘null
。
ç”案 2 :(得分:1)
å—段next
是对Nodetype
类型对象的引用。起åˆå®ƒå°†æŒ‡å‘什么 - å› ä¸ºå®ƒè¢«å®žä¾‹åŒ–ä¸ºnull
ã€‚å½“ä½ ç»™å®ƒèµ‹å€¼æ—¶ï¼Œå®ƒåªä¼šæŒ‡å‘那个值,除éžä½ 在列表ä¸åˆ›å»ºä¸€ä¸ªå¾ªçŽ¯ï¼Œå¦åˆ™ä»€ä¹ˆéƒ½ä¸ä¼šæ— é™å»¶ç»ã€‚
ç”案 3 :(得分:1)
您创建了类NodeType
,并在类ä¸å®šä¹‰äº†è¯¥ç±»çš„å¯¹è±¡ã€‚å› æ¤ï¼Œè¯¥å¯¹è±¡ï¼ˆåœ¨æ‚¨çš„示例ä¸ä¸ºnext
)将具有int info
å˜é‡NodeType next
å¯¹è±¡å’Œæž„é€ å‡½æ•°ã€‚
ç”案 4 :(得分:1)
next
是对å¦ä¸€ä¸ªNodetype
实例的引用。如果next == null
,则表示当å‰å…ƒç´ 是列表ä¸çš„最åŽä¸€ä¸ªå…ƒç´ 。
让我们看一个例å:
Nodetype node = new Nodetype(0); // i = 0, next = null
Nodetype anotherNode = new Nodetype(1); // i = 1, next = null
node.next = anotherNode; // now the first node has a ref to the second
ç”案 5 :(得分:1)
它将包å«Nullï¼Œå› ä¸ºå˜é‡æœªåˆå§‹åŒ–为任何值。
ç”案 6 :(得分:1)
Nodetype
是您的类,它定义节点实例将包å«çš„æ•°æ®ä»¥åŠå¯¹é“¾æŽ¥åˆ—表ä¸ä¸‹ä¸€ä¸ªèŠ‚点的引用。对下一个节点的引用将是Nodetype
类型的对象。这里没什么难的,这是链接列表的ç»å…¸å®žçŽ°ã€‚
您å¯èƒ½æƒ³æŸ¥çœ‹æ–¯å¦ç¦å¤§å¦çš„great linked list resourc e。
ç”案 7 :(得分:1)
è¿™ç§æ–¹æ³•çš„工作方å¼æ˜¯åˆ—表由å•ä¸ªå…ƒç´ 组æˆï¼Œæ¯ä¸ªå…ƒç´ åªæœ‰ä¸€ä¸ªæŒ‡å‘它åŽé¢çš„å…ƒç´ çš„æŒ‡é’ˆï¼š
Nodetype next;
列表ä¸æ¯ä¸ªå…ƒç´ 实际拥有的信æ¯æ˜¯ï¼š
int info;
您å¯ä»¥å°†åˆ—表视为“链â€ï¼šå®ƒä¸æ˜¯å•ä¸ªå¯¹è±¡ï¼Œè€Œæ˜¯å¤šä¸ªé“¾æŽ¥çš„å¤åˆå¯¹è±¡ã€‚从æ¯ä¸ªé“¾æŽ¥ï¼Œæ‚¨åªèƒ½çœ‹åˆ°ä¸‹ä¸€ä¸ªé“¾æŽ¥ï¼ˆæˆ–者,如果链接列表在两个方å‘éƒ½æœ‰å¼•ç”¨ï¼šä¸‹ä¸€ä¸ªå’Œä¸Šä¸€ä¸ªé“¾æŽ¥ï¼‰ï¼Œé‚£ä¹ˆä¸ºäº†ä½¿æ‰€æœ‰å…ƒç´ å¯ç”¨ï¼Œæ‚¨å°†å¿…é¡»ä¿ç•™å¼•ç”¨åˆ°â€œé“¾â€ä¸çš„ç¬¬ä¸€ä¸ªå…ƒç´ ã€‚
注æ„:List
个对象是å•ä¸ªå¯¹è±¡ï¼Œå®ƒä»¬å¼•ç”¨äº†â€œé“¾â€çš„第一个链接。
ç”案 8 :(得分:0)
ulElement.appendChild(fragment);
它的工作。