利用頭插法實現單向連結串列的逆置
這篇文章將再次討論單向連結串列的逆置問題。在原來的那篇文章中,我用了三個指標實現了這一功能,這樣顯得非常的麻煩複雜,程式碼也寫的略長一些。但是最近一同學給我看她寫的程式碼,利用建立單向連結串列時的頭插法,只需兩個指標就輕鬆巧妙的實現了單向連結串列的逆置過程。下面是該函式程式碼片:
小做說明:在while裡面的程式碼,正式實現功能的核心,將結點依次使用頭插法重新插入單鏈表中。這裡充分利用了頭插法的特點(先插入的在連結串列的後面,後插入的在連結串列的前面)。<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>
好了,這篇作為單鏈表逆置的補充文章就介紹到這裡,希望對同學們能有所幫助。
相關推薦
利用頭插法實現單向連結串列的逆置
這篇文章將再次討論單向連結串列的逆置問題。在原來的那篇文章中,我用了三個指標實現了這一功能,這樣顯得非常的麻煩複雜,程式碼也寫的略長一些。但是最近一同學給我看她寫的程式碼,利用建立單向連結串列時的頭插法,只需兩個指標就輕鬆巧妙的實現了單向連結串列的逆置過程。
利用頭插法建立一個單向連結串列以及連結串列的逆置
#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