1. 程式人生 > >利用頭插法實現單向連結串列的逆置

利用頭插法實現單向連結串列的逆置

        這篇文章將再次討論單向連結串列的逆置問題。在原來的那篇文章中,我用了三個指標實現了這一功能,這樣顯得非常的麻煩複雜,程式碼也寫的略長一些。但是最近一同學給我看她寫的程式碼,利用建立單向連結串列時的頭插法,只需兩個指標就輕鬆巧妙的實現了單向連結串列的逆置過程。下面是該函式程式碼片:

<span style="font-family:FangSong_GB2312;">void Transpose(SLNode *SLinkList)
{
	SLNode *p,*q;
	if(SLinkList->next&&SLinkList->next->next)
	{
		p=SLinkList->next;
		q=p->next;
		p->next=NULL;
		while(q)
		{
			p=q;
			q=q->next;	
			p->next=SLinkList->next;
			SLinkList->next=p;
		}
	}
}</span>
小做說明:在while裡面的程式碼,正式實現功能的核心,將結點依次使用頭插法重新插入單鏈表中。這裡充分利用了頭插法的特點(先插入的在連結串列的後面,後插入的在連結串列的前面)。

        好了,這篇作為單鏈表逆置的補充文章就介紹到這裡,希望對同學們能有所幫助。

相關推薦

利用實現單向連結串列

        這篇文章將再次討論單向連結串列的逆置問題。在原來的那篇文章中,我用了三個指標實現了這一功能,這樣顯得非常的麻煩複雜,程式碼也寫的略長一些。但是最近一同學給我看她寫的程式碼,利用建立單向連結串列時的頭插法,只需兩個指標就輕鬆巧妙的實現了單向連結串列的逆置過程。

利用建立一個單向連結串列以及連結串列

#include<stdio.h> #include<stdlib.h> #define N 10 //定義結構體單元 typedef struct node{ int data;//結構體資料域 struct node* next;//結構體

利用——建立、插入、遍歷連結串列

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <malloc.h> 4 typedef struct student 5 { 6 int num; 7 float socre;

c實現功能(13)實現單向連結串列的簡要功能

#include <stdio.h> #include <stdlib.h> //利用結構體建立節點 struct list{ //建立資料域 int data; //建立指標域 struct list *next; }; //實現建立一個

02-看圖理解資料結構與算系列(單向連結串列)

單向連結串列 單向連結串列屬於連結串列的一種,也叫單鏈表,單向即是說它的連結方向是單向的,它由若干個節點組成,每個節點都包含下一個節點的指標。 單鏈表特點 建立單鏈表時無需指定連結串列的長度,這個比起陣列結構更加有優勢,而陣列縱使實現成動態陣列也是需要指定一個更大的陣

使用Java實現單向連結串列,並完成連結串列反轉。

使用Java實現單向連結串列,並完成連結串列反轉。 演算法和資料結構是程式設計師逃不過的一個坎,所以趁著閒餘時間,開始學習基礎的演算法和資料結構。這裡記錄下自己實現簡單的單項鍊表的過程,如有錯誤,敬請指正。 明確需求 在Java中,常用的資料容器裡面,跟連結串列關係緊密的當屬

使用JavaScript實現單向連結串列

一、實現功能   1、連結串列元素頭部插入 this.unShift = function(data) {}   2、連結串列元素尾部插入 this.append= function(data) {} //返回boolean   3、連結串列元素按位置插入 this.insert= funct

C++ 實現單向連結串列

#include<iostream> #include<string> #include<stack> using namespace std; struct Node {int value;Node* Next; }; class List { private:

(C語言版)連結串列(一)——實現單向連結串列建立、插入、刪除等簡單操作(包含個人理解說明及註釋,新手跟著寫程式碼)

我學習了幾天資料結構,今天下午自己寫了一個單向連結串列的程式。我也是新手,所以剛開始學習資料結構的菜鳥們(有大牛們能屈尊看一看,也是我的榮幸)可以和我一起共同學習、討論,當然也很高興能指出我的錯誤,因為這是我們一起成長的過程。本程式碼包含我在寫程式時的一些個人理解的說

java實現--單向連結串列的插入和刪除

一、連結串列結構: (物理儲存結構上不連續,邏輯上連續;大小不固定)           概念:  鏈式儲存結構是基於指標實現的。我們把一個數據元素和一個指標稱為結點。        資料域:存數資料元素資訊的域。        指標域:儲存直接後繼位置的域。鏈式儲存結構是用

利用建立一個單鏈表

1 typedef int ElemType; 2 typedef struct LNode *LinkList; //結構指標 LinkList 3 typedef struct LNode //定義結構體 4 { 5 ElemType data; //資料域 6

java實現單向連結串列CRUD,反轉,排序,查詢倒數第k個元素,遞迴輸出等操作

package myLink; import javax.xml.transform.Templates; public class LianBiao { static Node head=null; /** * 查詢單鏈表的中間節

C++實現單向連結串列(1)

需要在你的主程式中新增#include "ListNode.cpp"ListNode.h#pragma once #include <iostream> using namespace std; template <typename T> clas

用c++實現單向連結串列和雙向連結串列

連結串列是一種非常基礎的資料結構,本身也比較靈活,突破了陣列在一開始就要確定長度的限制,能夠做到隨時使用隨時分配記憶體。同時還有新增,刪除,查詢等功能。 總的來說,連結串列是由幾個模組構成的。 一,單向連結串列 //連結串列基本元素 struct Nod

python 實現單向連結串列

1.連結串列Linked list 連結串列(Linked list)是一種常見的基礎資料結構,是一種線性表,但是不像順序表一樣連續儲存資料,而是在每一個節點(資料儲存單元)裡存放下一個節點的位置資訊(即地址)。 連結串列一個節點包含資料儲存單元和下一個節點的位

python實現單向連結串列

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5

大頭鍛鍊日記2 -- 無指標和結構體的vbscript中實現單向連結串列

'-------------------------------  '    腳本空間調用類實例 '-------------------------------  Dim TestLS Set TestLS=New List             '類實例化 MsgBox TestLS.IsRaw  

python實現單向連結串列

在C語言中,用指標來實現單向連結串列非常簡單。而python是不存在指標這種結構的,但我們也可以實現連結串列資料結構,使用類和物件的引用即可達到C語言中的指標的效果。 圖片來自於網路 圖中我們可以看到,單向連結串列的每一個節點會包含兩項資料,當前節點的元

(C++版)連結串列(一)——實現單向連結串列建立、插入、刪除等相關操作

         前段時間用C語言實現了連結串列的相關操作,但是發現當時挺清楚的,過了一段時間又忘的差不多了,所以現在打算用C++再實現一遍,由於初次用C++實現,存在錯誤的地方還望大家指標。下面就直接上程式碼: #include <iostream> #in

【演算法題】使用遞迴和非遞迴實現單向連結串列的轉

在閱讀的過程中有任何問題,歡迎一起交流 QQ:1494713801 問題: 給一個單向連結串列,把它從頭到尾反轉過來。比如: a -> b -> c ->d 反過來就是 d -> c -> b -> a 。 分析: 假設每一個node