"머리"라는 희소 배열이 주어졌습니다.이 배열은 색인과 값을 갖는 2 차원입니다. 그래서 같은 것을 : I은 오름차순이 희소 배열에 노드 (값, 인덱스)를 삽입 할 (3, 100) (6200) (8100)오름차순으로 연결된 목록을 만드는 방법
- . 내가 (2100)을 받았을 경우에는, 목록이 같아야합니다 그래서 : 내가 받았을 경우에는 마찬가지로 (2, 100) (4,200) (8,100)
을 (6200)를 (3100)를, 그것은 ( 를 반환해야 3,100) (4,200) (6,200) (8,100)
조건 1 : 인덱스가 동일한 경우, 그때는 값 I가 주어하고 그래서 경우
(3,100을 추가해야합니다), 그때 를 반환해야합니다 (3,200) (6,200) (8,100)
조건 2 : 인덱스가 같고 값이 0이면 값을 제거해야합니다. 배열 (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 인 색인은 계속 목록에 남아 있습니다. 누군가가 내가 정말 감사하겠습니다 내가 잘못하고 (그리고 아마도 그 이유)하고있는 무슨을 파악 좀 도와 수 있다면 결과는 (3,0) (6,200) (8,100)
입니다.
List_insert_ascend 메서드에는 목록의 헤드 노드에 대한 포인터가 제공됩니다. 따라서 첫 번째 단계로서 실제로 일치하는 인덱스가있는 노드를 찾으려면 목록의 노드를 반복해야합니다. 일치하는 색인이있는 노드가 없으면 새 노드를 작성하십시오.특정 노드에 동일한 색인이 있으면 List_insert_ascend에 주어진 값을 가진 해당 노드의 값을 추가하십시오. 이제 결과 값이 0인지 확인하십시오. 그렇다면 노드를 삭제하십시오. 전체 메서드가 끝나면 임의의 노드가 아니라 결과 목록의 머리글을 반환해야합니다. – sufinawaz