-
Heada 和 headb 都是具有前導節點的單鏈表。 在這個演算法中,我們從 heada 鍊表的第 i 個元素中刪除公共元素,然後在 headb 的第 j 個元素之前插入單鏈表 heada。
if ( i < 1 ||len < 1 ||j < 1)
printf ( "引數不正確");
exit ( 0);
p = heada;p 是鍊表 A 的工作指標,它被初始化為 A 的標頭指標,當找到第 i 個元素時,p 指向 i-1 元素。
int k = 0;計數。
while ( p != null &&&k < i-1)。
k++;p = p->next;
如果 ( p == null) i 太大,則退出演算法。
printf ( "給定的 %d 太大", i);
exit ( 0);
q = p->next;q 是工作指標,它最初指向 A 鍊表的第乙個節點。
k = 0;
while ( q != null &&k < len)
k++;u = q;
q = q->next;
free ( u);刪除節點並將指標移回。
if ( k < len)
printf ( "給定的 %d 太大", len);
exit ( 0);
p->next=q;鍊表刪除 len 元素。
if ( heada->next!=null) heada->next=null 表示鍊表中的所有節點都已被刪除,不需要插入到表 B 中。
while ( p->next != null) 來查詢 a 的尾節點。
p = p->next;
q = headb;q 是鍊表 B 的工作指標。
k = 0;計數。
while ( q != null &&k < j - 1)找到第 j 個節點,搜尋成功後,q 指向 j-1 節點。
k++;q = q->next;
if ( q == null)
printf ( "給定的 %d 太大", j);
exit ( 0);
p->next = q->next;鏈結 a 鍊表。
q->next = heada->next;A 的第乙個元素節點鏈遵循 B 的 J-1 節點。
free ( heada);釋放 A 標頭節點。
return headb;
-
因為不知道具體問題,只能寫演算法思路提供參考,假設單鏈表的節點型別是nodenode *p, *q, *a; p=;(a的第乙個元素)int k; for(k=0;k
-
看看閻偉民的資料結構。
範圍。 你靜態字元 *chh;
static char *ch1;雖然兩個指標指向的位址沒有變化,但你有沒有想過它們指向的記憶體位址是否已經釋放,char chc[10]; 它是本地的,函式已經結束,生命週期已經結束,你正在嘗試使用 void times() 中的指標訪問它。 >>>More