1. 程式人生 > >建立單鏈表的兩種方法

建立單鏈表的兩種方法

*建立單鏈表的方法*
頭插法建立單鏈表
個人感覺尾插法更容易理解= =頭插法看了好久才看懂(mock上的課不錯,這裡的程式碼就來自上面的老師的課件,大部分註釋是我自己的理解)

#include <iostream>
using namespace std;
struct LNode{
    int data;//資料域
    LNode*next;//指標域
};//定義一個結點型別的結構體
typedef LNode* LinkList;//用typedef來給LNode的指標型別定義一個新的名字LinkList
void input(int *ep)//形參是和資料域型別相同的指標,用來指向結點的資料域
{cout<<"請輸入要儲存的整數:"; cin>>*ep;} void CreateListF(LinkList *L,int n,void(*input)(int *ep))//第一個形參是頭結點的指標的指標,n是需要建立的結點的個數,函式的指標(這個我還不是很清楚) { LinkList s;//建立一個指向結點的指標 *L=new LNode;//建立頭結點 (*L)->next=NULL;//讓頭結點中的指標域初始為空值 for(;n>0;n--)//建立結點 { s=new LNode; //建立一個新結點 input(&s->data);//輸入該結點資料域所要儲存的資料
s->next=(*L)->next;//(第一次迴圈)將空值給開始結點的指標域;(第二次迴圈)讓第二個結點的資料域中儲存開始結點的地址,也就是現在頭節點的next和第二個結點的next都儲存著開始結點的地址(都指向開始結點); (*L)->next=s;//(第一次迴圈)讓頭結點的的指標域中儲存開始結點的地址;(第二次迴圈)讓頭結點的next中儲存第二個結點的地址; } } int main() { LinkList L; int n; cout<<"請輸入要建立結點的個數:"; cin>>n; CreateListF(&L,n,input); return
0; }

尾插法建立單鏈表
這個比較容易理解qwq

#include <iostream>
using namespace std;
struct LNode{
    int data;
    LNode* next;
};
typedef LNode* LinkList;
void input(int *ep)
{cout<<"請輸入連結串列中的內容:";
    cin>>*ep;
}
void CreateListR(LinkList *L,int n,void(*input)(int*))
{ LinkList p,s;//建立兩個結點型的指標;其中s用來建立結點,p用來實現迴圈
    p=*L=new LNode;//讓p和*L都指向頭結點
    for(;n>0;n--)//建立n個結點
    {s=new LNode;//建立一個新的結點
        input(&s->data);//輸入資料
        p->next=s;//(第一次迴圈)讓頭結點的next指向開始結點;(第二次迴圈)讓開始結點的next指向第二個結點,也就是新建立的結點
        p=s;//(第一次迴圈)讓p和s一樣指向開始結點;(第二次迴圈)讓p和s一樣指向新建立的結點,實現迴圈;
    }
    p->next=NULL;//最後尾結點的指標域要為0;
}
int main()
{LinkList L;
    int n;
    cout<<"請輸入要建立的結點的個數:";
    cin>>n;
    CreateListR(&L,n,input);
    return 0;
}

相關推薦

單鏈---方法簡單實現單鏈逆置

方法一:   反轉前後指標,通過建立三個指標的移動,將兩兩相鄰的結點依次進行反轉。 //單鏈表的逆置---相鄰指標 PNode ReverseList(PNode pHead) { PNode

pyspark 讀取csv檔案建立DataFrame的方法

pyspark 讀取csv檔案建立DataFrame的兩種方法 方法一:用pandas輔助 from pyspark import SparkContext from pyspark.sql import SQLContext import pandas as pd sc

JS動態建立css的方法

動態建立css樣式有兩種方式: 1.引入外部css檔案  2.插入css程式碼片段  動態插入css外部檔案的方法: function loadStyle(url){ var link = document.createElement('link'); link

圖的基本演算法實現(鄰接矩陣與鄰接方法

本部落格前面文章已對圖有過簡單的介紹,本文主要是重點介紹有關圖的一些具體操作與應用 一、無向圖 1 無向圖——鄰接矩陣 測試環境:VS2008 #include "stdafx.h" #include <stdlib.h> #include <m

Oracle下建立database link方法

資料庫之間的連結建立在DATABASE LINK上。要建立一個DATABASE LINK,必須首先在建立連結的資料庫上設定連結字串,即配置一個遠端資料庫的本地網路服務名。 資料庫全域性名稱可以用以下命令查出: SELECT * FROM GLOBAL_NAME; 修改可以用

Git 建立倉庫的方法

主要有兩種建立 Git 倉庫的方法: 遠端建立,本地克隆 本地建立,提交到遠端 1. 在 GitHub 網站上進行倉庫建立,克隆到本地 git clone [email prote

單鏈建立方法(頭插法和尾插法)

線性表可分為順序儲存結構和鏈式儲存結構順序儲存結構的建立,其實就是一個數組的初始化,即宣告一個型別和大小的陣列並賦值的過程。而單鏈表和順序儲存結構就不一樣,它的每個資料的儲存位置不需要像陣列那樣集中,它可以很散,是一種動態結構。對於每個連結串列來說,它所佔用的空間大小和位置並

建立單鏈方法

*建立單鏈表的方法* 頭插法建立單鏈表 個人感覺尾插法更容易理解= =頭插法看了好久才看懂(mock上的課不錯,這裡的程式碼就來自上面的老師的課件,大部分註釋是我自己的理解) #include <iostream> using namespac

java建立單鏈方式

/** * */ /** * @author jueying: * @version 建立時間:2018-10-23 下午01:26:47 * 類說明 */ /** * @author jueying * */ public class Test {

刪除一堆資料中重複資料的方法單鏈與線性)c++

前言   第一次寫部落格,問題雖然簡單,但是我寫的很認真的,,儘量將自己的思路寫的清晰,大神若路過請不要見笑(還望多多指點),真誠的希望我寫的東西能幫助到一些 人,有問題或錯誤都可以提,讓我們共同進步! 1.問題概述   在一堆資料中可能存在重複的資料,請將重

方法(遞迴,非遞迴)實現單鏈的逆轉

//普通方法實現連結串列的逆置 void reverseList(pNode *head) { pNode p, q, r; if (*head == NULL || (*head)->next == NULL) return; q = *head; p

有環判斷,快慢指針方法/合並鏈/刪除重復元素/二分遞歸和while

pan 快慢指針 fast public nbsp else pre log clas public static boolean hasCycle(ListNode head) { if (head == null || head.next ==

js阻止單提交的方法

js阻止表單提交的兩種方法<body> <form action="clock.html" method="post" onsubmit="return checkLength()"> <p>name:<input type="text" na

執行緒 之 建立方法)和啟動

java使用Thread類代表執行緒,所有的執行緒物件都必須是Thread 類或者子類的例項。 每個執行緒的任務是完成一定的任務,就是執行一段程式流。 目前有兩種建立方式(第三種後續補充) 一種是繼承Thread類 一種是實現Runnable介面` 一、繼承Thread類 1.定

用python介紹4常用的單鏈翻轉的方法

這裡給出了4種4種常用的單鏈表翻轉的方法,分別是: 開闢輔助陣列,新建表頭反轉,就地反轉,遞迴反轉 # -*- coding: utf-8 -*- ''' 連結串列逆序 ''' class ListNode: def __init__(self,x): self.va

建立多執行緒的方法

建立執行緒的方法: 一種方法是將類宣告為 Thread 的子類。該子類應重寫 Thread 類的 run 方法。接下來可以分配並啟動該子類的例項。 public class MyThread extends Thread{

建立執行緒常用的方法

1,實現Runnable方法 /** * 宣告實現 Runnable 介面的類。該類然後實現 run 方法。然後可以分配該類的例項,在建立 Thread 時作為一個引數來傳遞並啟動 * * * @author cuijiao * @date 2017年12月26日 */

執行緒池實現執行緒的建立方法

package cn.itcast.demo5; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /* JDK1.5新特性,實現執行緒池程式 使用

SQLserver 聯查及三聯查 方法

列表內容 –合同表顯示 跟使用者表聯查 SELECT * FROM dbo.Contract SELECT h.Contract_id,h.Contract_Name,y.NetName,h.Contract_Money,h.Contract_T

Qt通過類名稱建立類的例項的方法

1 通過qRegisterMetaType和QMetaType #ifndef ANIMAL_H #define ANIMAL_H class Animal { public: Animal(); virtual void voice(); }; #endif // ANI