逆置單鏈表及求鍊錶倒數第k個結點——題集(二)
今天分享一下兩道練習題,即逆置單鏈表以及求鍊錶倒數第
k個結點,要求時間複雜度為o(1)。
首先分享一下逆置單鏈表的**和執行介面。單鏈表分為帶頭結點的單鏈表和不帶頭結點的單鏈表。
源**如下:
#includeusing namespace std;
//逆置/反轉單鏈表,要求只能遍歷一次鍊錶
struct listnode};
listnode* reverse(listnode* l1)
l1->next=tail;//最後乙個結點與倒數第二個結點鏈結
head->next = l1;//把最後乙個結點給頭結點
return head; }
listnode* reverse1(listnode* l1)
l1->next=tail;//最後乙個結點與倒數第二個結點鏈結
head = l1;//讓原鍊錶的最後乙個結點變成頭結點
return head; }
void printf(listnode* l1)
printf("\n");}
void listtest()
void listtest1()};
listnode* findk(listnode* l1,int k)
break;
}if(num < k)return null;//鍊錶長度小於k
while(l1->next != null)
return point;}
void listtest(){
listnode l1(1);
listnode l2(2);
listnode l3(3);
listnode l4(4);
listnode l5(11);
l1.next = &l2;
l2.next = &l3;
l3.next = &l4;
l4.next = &l5;
cout<
執行介面
分享如上!望各位學的開心!
逆置單鏈表 求倒數第k個結點
定義並建立鍊錶 include using namespace std include typedef struct listnode listnode void push listnode list,int x else cur next tmp 逆置單鏈表 listnode listrevers...
求鍊錶倒數第k個節點
1.初解 public static node findkthtotail node head,uint k behind head while ahead.next null return behind 上面的 存在3處魯棒性問題 1 輸入的head為空指標。由於 會試圖訪問空指標指向的記憶體,程...
單鏈表的增刪查 逆置 倒數第k個節點等問題
對於單鏈表而言,它沒有雙鏈表那麼複雜,它只有頭節點,尾節點,節點資料,後繼指標。在下面本人實現了 單鏈表的 增 刪 插 查 改。include include include includetypedef int datatype typedef struct slistnode slistnode...