程式設計實現單鏈表的逆置
node *reverse(node *head){ node *p1,*p2,*p3; //申請三個結點 if(head==NULL || head->next==NULL) //如果目標單鏈表是空的,或是隻有一個結點的情況 return head; p1=head; //使p1指向頭結點 p2=p1->next;//使p1的next指向p2; while(p2) //當P2不為NULL時 { p3=p2->next;//使用P3指向p2的next p2->next=p1; //使p2的next指向p1p1=p2; //使p1指向p2p2=p3; //使p2指向p3}//重複此過程,即利用自己申請的p1,p2,p3三個結點,不斷的向後移動,每次迴圈使目標單鏈表的一個結點指向前面的//最後一次迴圈時,p2為最後一個元素 head->next=NULL;//使目標連結串列的尾結點(原頭結點)指向NULL head=p1;//使目標連結串列的尾結點指向NULL return head;}
相關推薦
藉助棧實現單鏈表逆置
這是C語言標準版吧,不涉及C++中的&引用. 程式碼: #include <stdio.h> #include <stdlib.h> #include <string.h> #define OK 1 #define ER
單鏈表---兩種方法簡單實現單鏈表逆置
方法一: 反轉前後指標,通過建立三個指標的移動,將兩兩相鄰的結點依次進行反轉。 //單鏈表的逆置---相鄰指標 PNode ReverseList(PNode pHead) { PNode
程式設計實現單鏈表的逆置
node *reverse(node *head){ node *p1,*p2,*p3; //申請三個結點 if(head==NULL || head->next==NULL) //如果目標單鏈表是空的,或是隻有一個結點的情況 return head; p1=hea
藉助於棧結構將一個單鏈表逆置
藉助於棧結構將一個單鏈表逆置。 輸入輸出樣例:1組 #1 樣例輸入: 5 //連結串列中有幾個元素 1 2 3 4 5 //連結串列中的元素分別是什麼 樣例輸出: 5 4 3 2 1 //逆置後輸出,利用棧結構 #include <stdio.h>
【演算法之連結串列(四)】在不使用額外節點儲存空間的情況下,實現單鏈表逆序
下面來看一下很經典的“單鏈表逆序”問題。很多公司的面試題庫中都有這道題,有的公司明確題目要求不能使用額外的節點儲存空間,有的沒有明確說明,但是如果面試者使用了額外的節點儲存空間做中轉,會得到一個比較低的分數。如何在不使用額外儲存節點的情況下使一個單鏈表的所有節點逆序?我們
C語言實現單鏈表逆序與逆序輸出例項
這篇文章主要介紹了C語言實現單鏈表逆序與逆序輸出,是資料結構與演算法中比較基礎的重要內容,有必要加以牢固掌握,需要的朋友可以參考下 單鏈表的逆序輸出分為兩種情況,一種是隻逆序輸出,實際上不逆序;另一種是把連結串列逆序。本文就分別例項講述一下兩種方法。具
【資料結構】單鏈表—逆置單鏈表
題目:定義一個函式,輸入一個連結串列的頭結點,反轉該連結串列並返回反轉連結串列後的頭結點。 我們可以藉助圖來分析一下: 我們定義一個新的頭結點為head,將begin指向head->_next,當begin不為空的時候,tmp = begin,be
C++實現單鏈表的逆置
#include<iostream> using namespace std; const int N=6; typedef struct node{ //單鏈表 int data; struct node* next
用C++實現單鏈表的建立、逆置和輸出
題目描述:在已知單鏈表頭節點的情況下,設計演算法逆置單鏈表並輸出 方法一:採用首先將頭節點指向空,讓其變為尾節點,然後利用中間節點 p、q 將其後的節點一個接一個改為指向前面的節點 /******
C語言實現單鏈表的逆置
單鏈表的逆置是一個非常經典的問題,這裡利用兩個思想進行解決。 首先,我們需要看下原理圖,其實兩個思想都是一樣的,都是使後一個的節點的 next 指標指向前一個節點,依次遞推,直到第二個節點指向第一個節點,第一個節點的 next 指標指向 NULL。
用c語言實現單鏈表的逆序輸出
<span style="font-family: Arial, Helvetica, sans-serif;">可以用遞迴,如果沒到連結串列尾,則遞迴查詢,否則輸出當前值。下面只是演算法表示,不能直接放到程式裡編譯執行。</span><span style="fo
【連結串列】實現單鏈表的逆序
1 public class Main { 2 3 // 就地逆序法 4 public Node reverse(Node head) { 5 // no need to reverse 6 if (head == null || head.
C語言面向物件程式設計:單鏈表實現(5)
前面我們介紹瞭如何在 C 語言中引入面嚮物件語言的一些特性來進行面向物件程式設計,從本篇開始,我們使用前面提到的技巧,陸續實現幾個例子,最後呢,會提供一個基本的 http server 實現(使用 libevent )。在這篇文章裡,我們實現一個通用的資料結構:單鏈表。
java實現單鏈表(增加節點,刪除節點,根據下標獲取節點,獲取連結串列大小,連結串列逆序)
最近面試被問到連結串列的問題很多,讓自己寫一個連結串列,並實現連結串列逆序,自己突然發現,用java實現連結串列還真是一件費時的事情,更何況筆試那點時間。現在做一下記錄,如果有錯誤,希望看見的人能指出
用異或操作實現的交換函數用以實現數組逆置中須要註意的問題
span include style 試題 blog text fontsize lib mod 用元素交換函數實現數組逆置非常easy,如以下代碼:(數組左右元素交換) #include<iostream> #include<stdlib.h>
C語言實現單鏈表節點的刪除(帶頭結點)
data art pos grand urn ria tps move sni 我在之前一篇博客《C語言實現單鏈表節點的刪除(不帶頭結點)》中具體實現了怎樣在一個不帶頭結點的單鏈表的刪除一個節點,在這一篇博客中我改成了帶頭結點的單鏈表。代碼演示樣例上傳至 h
大話數據結構之php實現單鏈表
線性表 單鏈表最近想起來兩件事1.大話數據結構和大話設計模式這兩本書很有意思,C語言有指針,所以實現起來容易理解,所以突然想到用PHP寫一下來熟悉一下數據結構的線性表,不過看的比較慢。一般兩三天才看完一部分,畢竟還要工作,老板還安裝攝像頭看著每天幹了啥。。。。。老板事業興隆,嘻嘻。線性表的概念不贅述,直接去看
C語言實現單鏈表的節點插入(帶頭結點)
alloc tails 函數 file ret con 實現 單獨 fun 我在之前一篇博客《C語言實現單鏈表(不帶頭結點)節點的插入》中具體實現了怎樣在一個不帶頭結點的單鏈表中進行節點的插入。可是在實際應用中,帶頭結點的鏈表更為經常使用。更為方便。今天我們
php與go實現單鏈表對比
package 排序 pac list tlist port pre urn h+ 實現鏈表操作大概需要定義一個節點結構和帶頭結點的鏈表結構,代碼大同小異 PHP版本 /** * 單鏈表節點 * Class Node */ class Node { /**
Java實現單鏈表的快速排序和歸並排序
解法 nod sin fonts 但是 二叉 復雜 sort tno 本文描述了LeetCode 148題 sort-list 的解法。 題目描述如下: Sort a linked list in O(n log n) time using constant space c