主頁 >  其他 > ??[資料結構]動圖詳解鏈表(單鏈表/雙鏈表……)(動圖+實體)【建議收藏】!??

??[資料結構]動圖詳解鏈表(單鏈表/雙鏈表……)(動圖+實體)【建議收藏】!??

2021-09-23 13:04:32 其他


🎈 作者:Linux猿

🎈 簡介:CSDN博客專家🏆,華為云享專家🏆,C/C++、面試、刷題、演算法盡管咨詢我,關注我,有問題私聊!

🎈 關注專欄:C/C++面試通關集錦 (優質好文持續更新中……)🚀


目錄

一、單鏈表

1.1 插入節點

1.2 洗掉結點

二、雙鏈表

2.1 插入節點

2.2 洗掉節點

三、單向回圈鏈表

3.1 插入節點

3.2 洗掉結點

四、雙向回圈鏈表

4.1 插入節點

4.2 洗掉節點

五、靜態鏈表

六、實戰講解

6.1 鏈表插入排序

6.1.1 題目描述

6.1.2 演算法思路

6.1.3 代碼實作

6.1.4 復雜度分析

6.1.5 題目鏈接

6.2 合并兩個有序鏈表

6.2.1 題目描述

6.2.2 演算法思路

6.2.3 代碼實作

6.2.4 復雜度分析

6.2.5 題目鏈接

6.3 反轉鏈表

6.3.1 題目描述

6.3.2 演算法思路

6.3.3 代碼實作

6.3.4 復雜度分析

6.3.5 題目鏈接

6.4 單鏈表去重

6.4.1 題目描述

6.4.2 演算法思路

6.4.3 代碼實作

6.4.4 復雜度分析

6.4.5 題目鏈接

6.5 判斷鏈表是否有環

6.5.1 題目描述

6.5.2 演算法思路

6.5.3 代碼實作

6.5.4 復雜度分析

6.5.5 題目鏈接

6.6 洗掉鏈表中倒數第 N 個結點

6.6.1 題目描述

6.6.2 演算法思路

6.6.3 代碼實作

6.6.4 復雜度分析

6.6.5 題目鏈接

6.7 移除鏈表中的元素

6.7.1 題目描述

6.7.2 演算法思路

6.7.3 代碼實作

6.7.4 復雜度分析

6.7.5 題目鏈接

七、總結


在日常的學習以及求職面試中,鏈表是一塊非常重要的內容,經常被提及,本篇文章總結了鏈表的各種型別,包括:單鏈表、雙鏈表、單項回圈鏈表、雙向回圈鏈表、靜態鏈表,接著會有大量真題實戰,想不會都難!趕緊來看下吧!

一、單鏈表

單鏈表是一種最簡單的鏈表形式,每個節點僅有一個指向下一個節點的指標(next 指標),因此,可以將節點連接成一條鏈,如下所示:

通常資料結構為:

struct node {
    int data;  // 存盤資料
    struct node *next; // 指標
};

鏈表通常有一個頭節點,比如上圖 Head 所指向的節點,頭節點可以存盤資料,也可以不存盤資料,添加不存盤資料的頭節點通常是為了便于處理鏈表,

1.1 插入節點

單鏈表插入節點有三步:

(1)獲取插入位置前一個節點的指標;

(2)待插入節點的 next 指標指向下一個節點;

(3)前一個節點的 next 指標指向待插入節點;

如下圖所示:

再來看一下動圖:

上述動圖是在節點 2 后面插入節點 9,按照鏈表三步走的方式來,先找到插入節點的位置,然后待插入節點指向下一個節點,前一個節點指向待插入節點,

1.2 洗掉結點

單鏈表洗掉節點有二步:

(1)獲取洗掉節點前一個節點的指標;

(2)前一個節點的指標指向下一個的下一個節點;

如下圖所示:

再來看一下動圖:

二、雙鏈表

雙向鏈表是指每個鏈表節點都有兩個指標,分別指向前后節點,當前節點既可以直接訪問下一個節點,也可以直接訪問前一個節點,

如下所示:

通常資料結構為:

struct node {
    int data;   // 存盤資料
    struct node *next; // 指向下一個節點
    struct node *pre;  // 指向前一個節點
};

2.1 插入節點

雙鏈表插入節點有二步:

(1)獲取插入位置前一個節點的指標;

(2)待插入節點的 next 指標指向下一個節點,下一個節點的 pre 指標指向待插入節點,前一個節點的 next 指標指向待插入節點,待插入節點 pre 指標指向前一個節點;(實作方法不唯一)

如下圖所示:

再來看一下動圖:

2.2 洗掉節點

雙鏈表洗掉節點有二步:

(1)獲取洗掉節點的指標;

(2)洗掉節點前一個節點的 next 指標指向洗掉節點的下一個節點,即:node-pre->next = node->next,洗掉節點下一個節點的 pre 指標指向洗掉節點的前一個節點,即:node->next->pre = node->pre;(實作方法不唯一)

如下圖所示:

再來看一下動圖:

三、單向回圈鏈表

單向回圈鏈表將鏈表中的節點相連接,形成了一個環,如下所示:

通常資料結構為:

struct node {
    int data;  // 資料
    struct node *next; // 指標
};

資料結構的表示和單鏈表一樣,

3.1 插入節點

單向回圈鏈表插入節點有三步:

(1)獲取插入位置前一個節點的指標;

(2)待插入節點的 next 指標指向下一個節點;

(3)前一個節點的 next 指標指向待插入節點;

如下圖所示:

再來看一下動圖:

插入節點的方式和單鏈表一樣,但是,單向回圈鏈表可以從尾指標找到頭指標,

3.2 洗掉結點

單向回圈鏈表洗掉節點有二步:

(1)獲取洗掉節點前一個節點的指標;

(2)前一個節點的 next 指標指向下一個的下一個節點;

如下圖所示:

再來看一下動圖:

四、雙向回圈鏈表

雙向回圈鏈表是指鏈表既有指向下一個節點的 next 指標,又有指向前一個節點的 pre 指標,而且還形成一個雙向環,如下所示:

通常資料結構為:

struct node {
    int data;   // 存盤資料
    struct node *next; // 指向下一個節點
    struct node *pre;  // 指向前一個節點
};

資料結構的表示和雙鏈表一樣,

4.1 插入節點

雙向回圈鏈表插入節點有二步:

(1)獲取插入位置前一個節點的指標;

(2)待插入節點的 next 指標指向下一個節點,下一個節點的 pre 指標指向待插入節點,前一個節點的 next 指標指向待插入節點,待插入節點 pre 指標指向前一個節點;(實作方法不唯一)

如下圖所示:

再來看一下動圖:

4.2 洗掉節點

雙向回圈鏈表洗掉節點有二步:

(1)獲取洗掉節點的指標;

(2)洗掉節點前一個節點的 next 指標指向洗掉節點的下一個節點,即:node-pre->next = node->next,洗掉節點下一個節點的 pre 指標指向洗掉節點的前一個節點,即:node->next->pre = node->pre;(實作方法不唯一)

如下圖所示:

再來看一下動圖:

五、靜態鏈表

靜態鏈表是結合了順序表和鏈表,通過陣列實作了鏈表,

如下所示:

通常資料結構表示為:

typedef struct {
    int data;   // 存盤資料
    int next;   // 陣列下標
}SLink;

SLink g[NUM]; // 陣列

六、實戰講解

6.1 鏈表插入排序

6.1.1 題目描述

給定鏈表的頭指標,對給定的鏈表進行插入排序,使得鏈表升序排列,

6.1.2 演算法思路

使用一個臨時的頭節點 tmpHead,因為如果要進行插入,每次都得從頭開始進行插入,首先,判斷當前節點是否大于等于前一個節點,如果是,則不需要插入,只需要移動節點即可,否則,從 tmpHead 處開始遍歷鏈表,找到一個合適的位置插入當前節點,一直回圈處理,直到處理完所有節點,

6.1.3 代碼實作

class Solution {
public:
    ListNode* insertionSortList(ListNode* head) {
        if(!head) return head;  // 空鏈表直接回傳
        ListNode* tmpHead = new ListNode(0);
        tmpHead->next = head;
        ListNode* pre = head, *curt, *tmp; // curt 為待排序的節點
        while (pre->next) { // pre->next 為待排序的節點
            curt = pre->next;
            if (pre->val <= curt->val) { // 如果大于或等于前一個節點,則直接移動到下一個節點
                pre = pre->next;
                continue;
            }
            tmp = tmpHead; // 從鏈表頭開始遍歷
            while (tmp->next->val <= curt->val) { // 尋找大于 curt 的節點
                tmp = tmp->next;
            }
            pre->next = curt->next;  // 先洗掉 curt 節點
            curt->next = tmp->next;  
            tmp->next = curt;
        }
        return tmpHead->next; // tmp 僅是臨時使用的
    }
};

6.1.4 復雜度分析

時間復雜度:O(n^2),幾乎每次都需要從頭遍歷進行插入元素,鏈表長度為 n,每次遍歷的復雜度為O(n),故總的時間復雜度為O(n^2);

空間復雜度:O(1),這里僅僅使用到幾個臨時變數,可以忽略,故空間復雜度為O(1);

6.1.5 題目鏈接

力扣

6.2 合并兩個有序鏈表

6.2.1 題目描述

將兩個升序鏈表合并為一個升序鏈表,新鏈表是通過拼接給定的兩個鏈表的所有節點組成的,

6.2.2 演算法思路

兩個升序鏈表都是有序的,同時遍歷兩個升序鏈表,每次選取兩個鏈表中值小的節點作為新鏈表的元素,直到所有元素都加入到新鏈表中,和歸并排序中的合并演算法一樣,如下圖所示:

6.2.3 代碼實作

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
        if(!l1) return l2;  // 一個鏈表為空,直接回傳另一個
        if(!l2) return l1;

        ListNode* Head = new ListNode(0);
        ListNode* p = Head;
        while (l1 && l2) {
            if (l1->val <= l2->val) { // 比較兩個鏈表元素
                p->next = l1;
                l1 = l1->next;
            } else {
                p->next = l2;
                l2 = l2->next;
            }
            p = p->next;
        }

        p->next = l1 ? l1 : l2;    // 將沒有合并完了鏈表鏈接在結尾

        return Head->next;  // 頭結點沒用到,回傳其下一個結點開始的鏈表
    }
};

6.2.4 復雜度分析

6.2.5 題目鏈接

力扣

6.3 反轉鏈表

6.3.1 題目描述

已知單鏈表的頭節點 head ,請反轉該鏈表,并回傳反轉后的鏈表,

6.3.2 演算法思路

我們拿鏈表中的任意三個連續的節點來舉例(當然,一個或兩個節點也成立),例如:A,B,C,要反轉鏈表,只需執行如下四步即可:

(假設當前節點為 B)

(1)首先,暫存 B 的下一個節點 C;

(2)讓 B->next 指向 A;

(3)當前節點指向 C;

一直重復上面三步,直到所有節點都遍歷完,

6.3.3 代碼實作

class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        ListNode *pNode = head;
        ListNode *tmp = NULL, *pre = NULL; // tmp 用于暫存結點,pre 存盤上一個結點
        while(pNode){
            tmp = pNode->next;  //暫存下一個結點的指標
            pNode->next = pre;   //當前節點指向前一個節點
            pre = pNode;         //更新前一個結點
            pNode = tmp;        //更新當前節點
        }
        return pre; //回傳頭節點
    }
};

6.3.4 復雜度分析

時間復雜度:O(n),鏈表長度為 n,程式遍歷一次鏈表,故時間復雜度為 O(n);

空間復雜度:O(1),因為沒有用到額外的空間(next 變數可以忽略),故空間復雜度為O(1);

6.3.5 題目鏈接

力扣

6.4 單鏈表去重

6.4.1 題目描述

給定一個按升序排列的鏈表,鏈表的頭節點為 head ,要求洗掉所有重復的元素,使每個元素只出現一次 ,

6.4.2 演算法思路

題目中給出的是升序鏈表,故相同的元素連續在一起,比如:1->2->2->2->5->8->8->10,那么,去重的時候,只需要用當前節點與下一個節點的值進行比較,如果節點值相等,則讓當前節點的next 指向下一個節點的 next,一直回圈操作,直到遍歷完所有節點,

6.4.3 代碼實作

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(!head) return head;
        ListNode* curt = head;
        while (curt->next) {
            if (curt->val == curt->next->val) { // 與下一個節點比較元素值
                curt->next = curt->next->next; // 相等則洗掉重復的節點
            } else {
                curt = curt->next; // 否則向后移動一個元素
            }
        }

        return head; // 回傳鏈表頭節點,頭節點沒有變
    }
};

6.4.4 復雜度分析

時間復雜度:O(n),鏈表長度為 n,程式中遍歷了一次鏈表,故時間復雜度為O(n);

空間復雜度:O(1), 程式運行程序中,沒有用到額外的空間,故時間復雜度為O(n);

注意:有人可能會說,程式中使用到一個臨時變數 curt,這種一個或兩個的空間是相對于 n 是可以忽略的,

6.4.5 題目鏈接

力扣

6.5 判斷鏈表是否有環

6.5.1 題目描述

給定一個鏈表,已知頭節點 head,判斷鏈表中是否有環,

6.5.2 演算法思路

快慢指標法:

使用兩個指標,慢指標每次移動一步,快指標每次移動兩步,如果存在環,則快指標一定會追上慢指標,

6.5.3 代碼實作

class Solution {
public:
    bool hasCycle(ListNode *head) {
        // 排除空鏈表和單個節點的情況
        if(head == NULL || head->next == NULL) return false;        
        ListNode *slow = head, *fast = head->next;
        while(slow != fast) {
            if(!fast || !fast->next) { // 判斷是否為空
                return false;
            }           
            slow = slow->next;
            fast = fast->next->next;
        }
        return true;                
    }
};

6.5.4 復雜度分析

時間復雜度:O(n);

空間復雜度:O(1);

6.5.5 題目鏈接

力扣

6.6 洗掉鏈表中倒數第 N 個結點

6.6.1 題目描述

給你一個鏈表,洗掉所給鏈表的倒數第 n 個結點,并且回傳鏈表的頭結點,

6.6.2 演算法思路

雙指標法:使用兩個指標,first 和 second,讓 first 先移動 n 步,second 指向頭節點,然后,first 和 second 兩個指標同時向后移動,當 first->next 為空的時候,second 指向的節點便是倒數第 n 個節點的前一個節點,這時候就可以洗掉倒數第 n 個節點了,

6.6.3 代碼實作

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) { // 雙指標法
        int i = 0;
        ListNode* first = head; // 首先,first 指標先移動 n 步
        while(i < n && first) {
            first = first->next;
            i++;
        }
        if(!first) return head->next; // 如果頭指標是倒數第 n 個,官方資料里沒有 n 大于鏈表長度的資料
        ListNode* second = head;
        while(first->next) { // 同時移動 first 和 second 指標
            first = first->next;
            second = second->next;
        }
        second->next = second->next->next; // 洗掉倒數第 n 個指標
        return head;
    }
};

6.6.4 復雜度分析

時間復雜度:O(n),只需要遍歷一次鏈表,故時間復雜度為 O(n);

空間復雜度:O(1),僅用到兩個指標以及一個變數,是常數級別的,可以忽略,故空間復雜度為O(1);

6.6.5 題目鏈接

力扣

6.7 移除鏈表中的元素

6.7.1 題目描述

給定一個鏈表的頭節點 head 和一個整數 val ,需要洗掉鏈表中所有滿足 node->val == val 的節點,

6.7.2 演算法思路

設定一個輔助頭節點,依次遍歷元素,如果等于 val 則洗掉節點,否則移動到下一個節點,

6.7.3 代碼實作

class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        if(!head) return head;
        ListNode* tmpHead = new ListNode(0); // 輔助頭節點
        tmpHead->next = head;
        ListNode* curt = tmpHead; // 當前節點
        while (curt->next) {
            if (curt->next->val == val) { // 相等的話洗掉
                curt->next = curt->next->next;
            } else {
                curt = curt->next;
            }
        }
        return tmpHead->next;
    }
};

6.7.4 復雜度分析

6.7.5 題目鏈接

力扣

七、總結

鏈表適合于用在經常作插入和洗掉操作的地方,使用的時候注意要判斷鏈表是否為空,

?好文推薦?

保姆級!超詳解!遠程連接Linux虛擬機!

一看就懂!保姆級實體詳解 STL list 容器【萬字整理】

最受歡迎的 Linux 竟然是它,Ubuntu 排第六 ?

歡迎關注下方👇👇👇公眾號👇👇👇,獲取更多優質內容🤞(比心)!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302237.html

標籤:其他

上一篇:大型企業中如何批量管理千萬臺服務器之ansible自動化運維工具詳解 [?建議收藏?]

下一篇:通信協議定義

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more