思路:
有兩種情況,相鄰和不相鄰。
首先找兩個節點的前驅,可以通過前驅來判斷是否相鄰。
相鄰則改變3個結點的next指標,不相鄰則改變4個結點的next指標。
注意:
要判斷許多出錯的情況,比如,結點不在表中,結點為空,表為空等。
// linktable.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #include using namespace std;
//鍊錶的結構體
struct node
;//建立鍊錶
struct node * create( string & str_link )
return phead;
}//輸出鍊錶
void out_link( struct node * phead )
cout << endl;
}//找到第index個元素
struct node * find_node(struct node* phead, int index )
return pnode;
}//找前驅節點
struct node* find_prenode( struct node* phead, struct node* pnode)
return null;
}//交換節點
void exchange_node( struct node* phead, struct node* pnode1, struct node* pnode2)
if( ppre1 == pnode2)
if( ppre2 == pnode1 || ppre1 == pnode2 )
else }
void test()
{ string str;
cin >> str;
struct node *phead = create( str );
int index;
cin >> index;
struct node * pnode1 = find_node( phead, index );
cin >> index;
struct node * pnode2 = find_node( phead, index );
exchange_node( phead, pnode1, pnode2 );
cout << "after exchange: "<
鍊錶 兩個單鏈表求差集
問題描述 已知集合a和b的元素分別用不含頭結點的單鏈表儲存,函式difference 用於求解集合a與b的差集,並將結果儲存在集合a的單鏈表中。例如,若集合a 集合b 完成計算後a 鍊錶結點的結構型別定義如下 struct node 請完成函式void difference node la node...
兩個單鏈表生成相加鍊錶
題目 假設鍊錶中每乙個節點的值都在0 9之間,那麼鍊錶整體就可以代表乙個整數。例如9 3 7,代表937.給定兩個這種鍊錶的頭節點head1和head2,請生成代表兩個整數相加值的結果鍊錶。例如 9 3 7和6 3,相加結果為1 0 0 0 兩個單鏈表生成相加鍊錶 方法1 利用棧結構求解 publi...
兩個單鏈表生成相加鍊錶
題目 假設鍊錶中每乙個節點的值都在0 9之間,那麼鍊錶整體就可以代表乙個整數。例如 9 3 7,可以代表整數937.給定兩個兩個這種鍊錶的頭結點head1和head2,請生成代表兩個整數相加值的結果鍊錶。例如 鍊錶1為9 3 7,鍊錶2為6 3,最後生成新的結果鍊錶為1 0 0 0。public c...