共謀節點兩個單列表

2021-09-07 01:13:47 字數 1234 閱讀 5674

題目:輸入兩個單鏈表。找出公共結點。

思路:若兩個單鏈表有公共結點。其形狀必然為「y」型,也就是說公共結點後的全部結點都是同樣的。

我們首先獲得兩個鍊錶的長度。求得長度之差為n,再定義兩個指標分別指向兩個鍊錶首部,長鍊表先走n步,然後兩個指標同一時候走,直到兩個指標所指向的值全然同樣時停止。

**:

/*

求鍊錶公共結點

*/#include#includetypedef struct _node_

node,*pnode;

int get_length(pnode list)

int len = 0;

pnode ptemp = list;

while(ptemp != null)

return len;

}void create(pnode *list,int n)

*list = (pnode)malloc(sizeof(node));

if(!list)

int data;

scanf("%d",&data);

(*list)->data = data;

(*list)->next = null;

pnode ptemp = *list;

for(int i = 0; i < n-1; i++)

pnew->data = data;

pnew->next = null;

ptemp->next = pnew;

ptemp = pnew; }}

//求單鏈表公共結點

pnode findcommonnode(pnode list1,pnode list2)

int len1 = get_length(list1);

int len2 = get_length(list2);

int dif = len1 - len2;

pnode plong = list1;

pnode pshort = list2;

if(dif < 0)

while(dif > 0)

while(plong != null && pshort != null && plong != pshort)

return plong;

}void destroy(pnode *list)

pnode p = *list,q;

while(p != null)

}

兩兩交換兩個相鄰節點

給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。如 給定1 2 3 4,返回2 1 4 3。說明 方法一 交換兩個節點裡的值而節點不動。該題禁止這樣做 方法二 老老實實的交換就好了 我的 if head null return head if head.next null return h...

Nifi Docker集群 兩個節點(2)

構建基礎映象前,請確保 1.物理機或者虛擬機器對外網路通暢,ping baidu.com有收到回應資訊 2.確保dockerfile檔案所在目錄中存在以下檔案及資料夾 dockerfile,init.sh,id rsa.pub ssh keygen q n t rsa cp cp root ssh ...

BST 兩個節點的和

給定一棵bst和乙個常數k,判斷bst中是否存在兩個節點的和等於k。方法一 不使用bst的性質,用乙個列表儲存遍歷過的節點的 k val 值,如果後面的節點的值等於列表中的值,說明這個節點和前面某個節點的和等於k。class solution 方法二 利用bst的中序遍歷是有序佇列的性質,把bst的...