我給出了一個名爲「head」的稀疏數組,它是一個具有索引和值的二維數組。因此,像: (3,100)(6200)(8100)如何按升序創建鏈接列表
- 我要插入的節點(值,指數)爲以升序此稀疏陣列。所以,如果我給(2 100),列表看起來應該像: (2,100)(3100)(6200)(8100)
同樣的,如果我給(4200),它應該返回 ( 3100)(4200)(6200)(8100)
條件1:如果指數是相同的,那麼我必須添加值
所以,如果我給(3100),那麼我應該返回 (3,200)(6,200)(8,100)
條件2:如果指數相同,且值爲零,則應刪除該值。所以,如果數組(3,-100),我必須回到
(6200)(8100)
Node * List_insert_ascend(Node * head, int value, int index)
{
Node * node = List_create(value, index); //this creates an empty node, "node"
if (index < (head->index)) //node's index is less, e.g. (1,100)
{node -> next = head;} //this inserts "node" before "head"
if (index == (head->index))
{
node = head;
head->value = head->value + value; //Condition 1
while ((head->value)==0) //Condition 2
{
Node *p = head->next;
head = p;
}
}
return node;
}
我的理解是,當我讓頭戴式>旁邊的新掌門人,應該讓擺脫原來的條目。
但0值ed指數繼續保留在列表中。結果是 (3,0)(6200)(8100)
如果有人可以幫我找出我做錯了什麼(甚至爲什麼)我真的很感激它。
在List_insert_ascend方法中,給出了指向列表頭節點的指針。因此,作爲第一步,您實際上必須遍歷列表中的節點以查看哪個節點具有匹配的索引。如果沒有節點具有匹配的索引,則創建一個新節點。如果特定節點確實具有相同的索引,請使用List_insert_ascend中的給定值添加該節點的值。現在檢查結果值是否爲0.如果是,則刪除節點。在整個方法結束時,您應該返回結果列表的頭部,而不是任意節點。 – sufinawaz