建立單鏈表的兩種方法
*建立單鏈表的方法*
頭插法建立單鏈表
個人感覺尾插法更容易理解= =頭插法看了好久才看懂(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