////test_list_oper
////
created by hugo cao on 15/7/6.
////
/*題目:反轉鍊錶
伴隨著大量的指標操作,3個指標,複雜度o(n).
//反轉鍊錶,三個指標,遍歷一次。
lnode * secondreseverlist(lnode *head)
lnode *p_head = null; //返回的頭節點
lnode *p_node = head; //當前結點
lnode *p_prev = null; //前乙個節點
while (p_node != null)
p_node->m_pnext = p_prev;
p_prev = p_node;
p_node = p_next;
}return p_head;}*/
#include
#include
#include
#include
using
namespace
std;
typedef
struct
listnode
lnode;
//新增元素結點
void listaddnode(lnode *head)
p_inter->m_pnext =null;
intdata;
printf(
"請輸入數字:\n");
scanf("%d
", &data);
p_inter->m_nvalue =data;
while (p->m_pnext !=null)
p->m_pnext =p_inter;
}//建立元素結點
lnode* createlist(lnode *head)
head->m_pnext =null;
intdata;
printf(
"請輸入數字:\n");
scanf("%d
", &data);
head->m_nvalue =data;
lnode *p =head;
char x_cin = 'y'
;
while (true
)
else
if (x_cin == '
n' || x_cin == 'n'
)
else
listaddnode(p);
}}//
顯示列表
void showlist(lnode *head)
lnode *p =head;
while (p !=null)
}//翻轉鍊錶
void reverseput(lnode *point)
cout
<< "
翻轉以後的輸出
"
}//輸出倒數第k個元素節點,遍歷所有節點型。
void firstprintnode(lnode *head, int
knum)
if (length cout
<< "
鍊錶長度為:
"
while (length !=knum)
cout
<< "
輸出倒數第k個元素節點:
"<< p->m_nvalue <輸出第k個結點,第二種方式,兩個指標
void secondprintnode(lnode *head, int
knum)
cout
<< "
輸出倒數第k個元素節點:
"<< p2->m_nvalue <反轉鍊錶,三個指標,遍歷一次。
lnode * secondreseverlist(lnode *head)
lnode *p_head = null; //
返回的頭節點
lnode *p_node = head; //
當前結點
lnode *p_prev = null; //
前乙個節點
while (p_node !=null)
p_node->m_pnext =p_prev;
p_prev =p_node;
p_node =p_next;
}return
p_head;
}int
main()
鍊錶 反轉鍊錶
問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...
反轉鍊錶與分組反轉鍊錶
經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...
劍指offer系列之14 反轉鍊錶
題目描述 定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出翻轉後鍊錶的頭節點。思路 在調整節點i的m pnext指標時,除了需要知道節點i本身,還需要節點i的前乙個節點h,因為需要把節點i的m pnext指向節點h,同時還需要乙個儲存i的乙個節點j,以防止鍊錶斷開,因此需要定義三個指標,分別指向...