//移除最後乙個的節點 使用二級指標更好
int removefromlast(node ** firstlocation)
if (head->next == null)
node * current = head;
while (current->next->next != null)
free(current->next);
current->next = null;
return 0;
}//列印所有的節點 通過頭節點
void printlist(node * head)
while (current != null)
}//在結尾新增乙個數字
void pushend(node * head, int val)
node * va = malloc(sizeof(node));
va->next = null;
va->value = val;
current->next = va;
}//新增到首個節點
void addfirst(int val, node ** head)
/** * 移除第乙個節點,返回第乙個值,修改head指標
*/int removefromfrist(node ** head)
int va = (*head)->value;
first = *head;
*head = (*head)->next;
free(first);
return va;
}//移除最後乙個元素
//條件是:首位為空情況下,第二位為空情況下,第三位為空?
//為啥並滅有實際改變這個值??
//通過下標移除節點
//從中間進行移除,需要從中間進行刪除,所以,需要知道之前節點,然後知道後面節點 長度大於這個長度怎麼辦
void removebyindex(int index, node**head)
int i;
node * previous;
for (i = 0; i < index; i++) else
} //將節點放到接到後面,然後釋放到當前節點記憶體
if (current == null) else
}/**
*通過值進行刪除,首先考慮刪除乙個,然後考慮如何進行刪除多個操作
*刪除多個可以通過多次迴圈執行這東西,所以需要有所返回
*/int removebyvalue(node**head, int val)
node * previous;
while (current != null && current->value != val)
if (current != null) else
}
鍊錶合併:
//合併兩個鍊錶 獲取的鍊錶是有序的 被合併的兩個鍊錶也是有序的,這裡都是公升序
//改變兩個鍊錶,利用之前鍊錶生成新的鍊錶
int megelist(node *first, node * second) else
while (first != null && second != null) else
} head->next = first ? first : second;
return one;
}//合併值,並不改變之前的兩個鍊錶
int mergevalue(node* fir, node* sec) else
while (fir!=null && sec!=null) else
} while (fir)
while (sec)
head->next = null;
return one;
}
寫著玩的,木有啥用
玩鍊錶 oj
time limit 1000ms memory limit 65536kb problem description blue 獲得了乙個含有 n 個數的初始鍊錶,現在他要把另外的一些數插入到鍊錶的開頭。你能幫他完成嗎?input 輸入資料有多組 資料組數不超過 20 到 eof 結束。對於每組資料...
C 中實現鍊錶(本人覺得有用)
由於c 是物件導向的,但比之c 而言,缺少了指標這一功能,雖然沒了繁瑣的指標,但有得必有失,本人總結了在c 中通過類來實現c 中用指標實現的鍊錶的功能。個人覺得比較有用。public class link 關於此函式的說明,classmates,teacher,friend均是node的基類,特此說...
c語言鍊錶 鍊錶
在儲存一大波數的時候,我們通常使用陣列,但有時候陣列顯得不夠靈活,比如有一串已經從小到大排序好的數 2 3 5 8 9 10 18 26 32 現在需要往這串數中插入6使其得到的新序列仍符合從小到大排列。如果我們使用陣列來實現這一操作,則需要將8和8後面的數字都依次往後挪一位,如果你覺得這幾個數不算...