有序鍊錶的合併和刪除

2021-07-25 12:16:19 字數 1103 閱讀 4497

#include

#include

struct node;

typedef int datatype;

typedef struct node *pnode;

struct node

;typedef struct node *linklist;

linklist createnulllist()

//尾插法建立單鏈表

pnode createlinklist(linklist head)

}printf("尾插法建立鍊錶成功\n\n");

return head;

}//合併list1和list2鍊錶

pnode add(linklist list1,linklist list2,linklist list3)

else if(p1->info==p2->info)

else

}while(p1!=null)

while(p2!=null)

rear->link=null;                     //要讓兩個都要指向空,不然輸出會陷入死迴圈中

p3->link=null;

return list3;

}//刪除值相同的結點,只保留乙個

pnode deletelist(linklist list3,int n)

else p=p->link;

}if(i==0) printf("list3裡面沒有該數值\n\n");

p=head->link;                               //重新讓p指向開頭

while(p!=null)                            //i如果等於1就證明只有乙個該數值的結點,就不用刪除

else p=p->link,q=q->link;}}

return list3;

}//輸出鍊錶

void print(linklist head)

printf("\n");

}int main()

}system("pause");

return 0;

}

有序鍊錶合併

歸併排序 la lb是兩個帶頭結點的有序鍊錶,歸併兩個鍊錶得到新的有序表lc。設立指標pa,pb,pc,其中pa和pb分別指向la,lb中當前待比較的結點,pc指向lc表中當前最後乙個結點。將pa,pb結點中值較小的乙個鏈結到pc之後。typedef struct node node,plink 銷...

鍊錶 合併有序鍊錶

題目 將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 題解我們這裡利用到了乙個前哨節點,因為兩個鍊錶實際上是已經排好序了,所以我們只需要比較兩個節點誰大誰小,找到小的接上去,然後那個...

鍊錶 合併有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。leetcode21 class solution else head head.next head.next l1 null?l2 l1 return result.next class solut...