題目:輸入兩個單鏈表。找出公共結點。
思路:若兩個單鏈表有公共結點。其形狀必然為「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的...