国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

帶你玩轉(zhuǎn)單向鏈表(學(xué)習(xí)必備)

這篇具有很好參考價(jià)值的文章主要介紹了帶你玩轉(zhuǎn)單向鏈表(學(xué)習(xí)必備)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

本文概要

本篇文章主要介紹數(shù)據(jù)結(jié)構(gòu)中單向鏈表各種操作,適合有C語言基礎(chǔ)的同學(xué),文中描述和代碼示例很詳細(xì),干貨滿滿,感興趣的小伙伴快來一起學(xué)習(xí)吧!

??????個(gè)人簡介??????

??大家好!我是新人博主朦朧的雨夢,希望大家多多關(guān)照和支持??????
??大家一起努力,共同成長,相信我們都會(huì)遇到更好的自己??????
??期待我的文章能給各位帶來知識(shí)的收獲和解決問題的靈感??????
??大家的三連是我不斷更新的動(dòng)力??????

學(xué)習(xí)目標(biāo)??

??1.了解單向鏈表的結(jié)構(gòu)特點(diǎn);

??2.掌握單向鏈表的創(chuàng)建;

??3.掌握單向鏈表的各種操作。

?一.單向鏈表

??1.單向鏈表的定義

??單鏈表是一種鏈?zhǔn)酱嫒〉臄?shù)據(jù)結(jié)構(gòu),用一組地址任意的存儲(chǔ)單元存放線性表中的數(shù)據(jù)元素。鏈表中的數(shù)據(jù)是以結(jié)點(diǎn)來表示的,每個(gè)結(jié)點(diǎn)的構(gòu)成:元素(數(shù)據(jù)元素的映象) + 指針(指示后繼元素存儲(chǔ)位置),元素就是存儲(chǔ)數(shù)據(jù)的存儲(chǔ)單元,指針就是連接每個(gè)結(jié)點(diǎn)的地址數(shù)據(jù)。乍一看的意思就像是乍一看,每個(gè)字都認(rèn)識(shí),連在一起就成這樣了:
帶你玩轉(zhuǎn)單向鏈表(學(xué)習(xí)必備)

其實(shí),很簡單,我用一張圖來解釋單向鏈表的結(jié)構(gòu):
帶你玩轉(zhuǎn)單向鏈表(學(xué)習(xí)必備)
是不是一下就清楚什么是單向鏈表了,關(guān)于頭指針head和終端結(jié)點(diǎn)

  • 單鏈表中每個(gè)結(jié)點(diǎn)的存儲(chǔ)地址是存放在其前趨結(jié)點(diǎn)Pnext域中,而開始結(jié)點(diǎn)無前趨,故應(yīng)設(shè)頭指針head指向開始結(jié)點(diǎn)。鏈表由頭指針唯一確定,單鏈表可以用頭指針的名字來命名。

  • 終端結(jié)點(diǎn)無后繼,故終端結(jié)點(diǎn)的指針域?yàn)榭?,即NULL。

?二.單向鏈表的創(chuàng)建

1.首先,我們需要定義一個(gè)結(jié)構(gòu)體來裝著元素和指向下一個(gè)元素節(jié)點(diǎn)的指針

#include<stdio.h>
//定義結(jié)構(gòu)體
struct Mystruct 
{
    int data;
    struct Mystruct *pnext;
 
};

2.接下來,我們創(chuàng)建一個(gè)無空頭的鏈表,首先定義頭尾指針(方便對鏈表進(jìn)行
操作)

#include<stdio.h>
//定義結(jié)構(gòu)體
struct Mystruct 
{
    int data;
    struct Mystruct *pnext;
 
};

int main(void)
{
	//定義頭尾指針
	struct Mystruct *phead = NULL;
	struct Mystruct *pend= NULL;

	return 0;
}

3.以尾添加(尾插)為例,因?yàn)樾枰淖冎羔樀闹赶?,必須傳遞二級指針,現(xiàn)在寫出我們的第一個(gè)鏈表

void end_add(struct Mystruct **phead,struct Mystruct **pend,int add_data)

{    //參數(shù)合法性檢測
    if (NULL == phead || NULL == pend)
        return;

    //申請新節(jié)點(diǎn)
    struct Mystruct* new_pdode = (struct Mystruct*)malloc(sizeof(struct Mystruct));

    //檢測是否申請成功
    if (NULL == new_pdode)
    {
        printf("空間申請失敗");
        return;
    }

    //新節(jié)點(diǎn)賦值
    new_pdode->data = add_data;
    new_pdode->pnext = NULL;

    //連接
    //無節(jié)點(diǎn)的情況
    if (NULL == *phead && NULL == *pend)

    {
        *phead = new_pdode;

    }
    //有節(jié)點(diǎn)情況
    else
    {
        (*pend)->pnext = new_pdode;

    }
    *pend = new_pdode;


}

?三.單向鏈表的各種操作

1.增加元素

上面講了尾插,所以就該講頭插了:

void head_add(struct Mystruct** phead, struct Mystruct** pend, int adddata)
{
    //參數(shù)合法性檢測
    if (NULL == phead || NULL == pend)
        return;

    //創(chuàng)造新節(jié)點(diǎn)
    struct Mystruct* new_pdode = (struct Mystruct*)malloc(sizeof(struct Mystruct));

    //合法性檢測
    if (NULL == new_pdode)
    {
        printf("空間申請失敗");
        return;
    }

    //新節(jié)點(diǎn)賦值
    new_pdode->data = adddata;
    new_pdode->pnext = NULL;

    //連接
    //無節(jié)點(diǎn)的情況
    if (NULL == *phead && NULL == *pend)

    {
        *pend = new_pdode;

    }
    //有節(jié)點(diǎn)的情況
    else
    {
        new_pdode->pnext = *phead;

    }
    *phead = new_pdode;

}

2.查找元素

1.根據(jù)下標(biāo)查找元素

struct Mystruct* index_find(struct Mystruct* phead, int index)
{

    //參數(shù)合法性檢測
    if (NULL == phead || index < 0)
        return NULL;

    //記錄頭指針
    struct Mystruct* p = phead;

    for (int i = 0; i < index; i++)
    {
        p = p->pnext;
    }
    return p;
}

2.根據(jù)數(shù)據(jù)查找元素

void data_find(struct Mystruct* phead, int designated_data)
{
	//參數(shù)合法性檢測
    if (NULL == phead)
        return;
        
    //記錄頭指針    
    struct Mystruct* ptemp = phead;
    while (ptemp != NULL)
    {
        if (ptemp->data == designated_data)
        {
            printf("找到了");
            break;

        }
        ptemp = ptemp->pnext;
    }
    return;
}

3.修改元素?cái)?shù)據(jù)

根據(jù)下標(biāo)修改元素?cái)?shù)據(jù)

void index_change(struct Mystruct *phead,int index, int change_data)
{
	//參數(shù)合法性檢測
    if (index < 0)
        return;
    //調(diào)用下標(biāo)查找函數(shù)
    struct Mystruct* p = index_find(phead, index);
  	//更改數(shù)據(jù)
    p->data = change_data;


}

4.刪除元素

void freelist(struct Mystruct* phead)
{
	//記錄頭指針
	struct Mystruct* pt = phead;
	//開始刪除
    while (pt != NULL)
    {
        struct Mystruct* p = pt;
        pt = pt->pnext;
        free(p);
    }
}

?四.結(jié)語

單向鏈表的操作非常重要,對于新手來說。可能需要重復(fù)捋幾遍思路,一旦掌握就會(huì)覺得非常簡單,相信大家通過這篇文章已經(jīng)可以掌握了單向鏈表的操作,今天就分享到這里,謝謝大家的觀看,有什么想法記得評論區(qū)告訴我!拜拜~? ? ?

??往期好文推薦

??TOP??.AI工具究竟是幫手還是對手???????????????????

??TOP??.Python爬蟲 | 利用python爬蟲獲取想要搜索的數(shù)據(jù)(某du)??????????????????

??TOP??.ChatGPT | 一文詳解ChatGPT(學(xué)習(xí)必備)??????????????????
帶你玩轉(zhuǎn)單向鏈表(學(xué)習(xí)必備)
文章來源地址http://www.zghlxwxcb.cn/news/detail-432163.html

到了這里,關(guān)于帶你玩轉(zhuǎn)單向鏈表(學(xué)習(xí)必備)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 帶你玩轉(zhuǎn)雙鏈表

    帶你玩轉(zhuǎn)雙鏈表

    相信經(jīng)過前面的學(xué)習(xí),大家已經(jīng)了解的單鏈表的缺陷和用途,今天我們學(xué)習(xí)雙鏈表,和以前不同,今天雙鏈表的實(shí)現(xiàn)我們增加一點(diǎn)點(diǎn)的難度,但我相信這些難度對大家都沒有問題。和之前單鏈表的實(shí)現(xiàn),我們的數(shù)據(jù)類型是固定的,主函數(shù)中傳什么我們的單鏈表結(jié)構(gòu)體中就需要

    2024年02月13日
    瀏覽(24)
  • 一文帶你玩轉(zhuǎn)ProtoBuf

    一文帶你玩轉(zhuǎn)ProtoBuf

    在網(wǎng)絡(luò)通信和通用數(shù)據(jù)交換等應(yīng)用場景中經(jīng)常使用的技術(shù)是 JSON 或 XML,在微服務(wù)架構(gòu)中通常使用另外一個(gè)數(shù)據(jù)交換的協(xié)議的工具ProtoBuf。 ProtoBuf也是我們做微服務(wù)開發(fā),進(jìn)行Go進(jìn)階實(shí)戰(zhàn)中,必知必會(huì)的知道點(diǎn)。 今天就開始第一章內(nèi)容:《一文帶你玩轉(zhuǎn)ProtoBuf》 你可能不知道

    2023年04月16日
    瀏覽(24)
  • 帶你玩轉(zhuǎn)三子棋—【C語言】

    帶你玩轉(zhuǎn)三子棋—【C語言】

    目錄 前言: 1. 菜單的打印 2. game函數(shù)的實(shí)現(xiàn) 2.1 初始化棋盤 2.2 顯示棋盤 2.3 玩家下棋 2.4 電腦下棋 2.5 判斷輸贏 2.6 判斷棋盤是否滿了 3. 全部代碼 3.1 game.h 3.2? game.c 3.3 test.c 為了實(shí)現(xiàn)三子棋,首先我們應(yīng)該將代碼分模塊編寫,我們分為3個(gè)部分 1. test.c —測試游戲(主函數(shù))2

    2024年02月04日
    瀏覽(22)
  • 一文帶你玩轉(zhuǎn)C語言文件操作

    一文帶你玩轉(zhuǎn)C語言文件操作

    作者主頁: ?paper jie的博客_CSDN博客 本文作者: 大家好,我是paper jie,感謝你閱讀本文,歡迎一建三連哦。 本文錄入于 《系統(tǒng)解析C語言》專欄,本專欄是針對于大學(xué)生,編程小白精心打造的。筆者用重金(時(shí)間和精力)打造,將算法基礎(chǔ)知識(shí)一網(wǎng)打盡,希望可以幫到讀者們哦

    2024年02月17日
    瀏覽(25)
  • Python | 帶你玩轉(zhuǎn)Python的各種文件操作

    Python | 帶你玩轉(zhuǎn)Python的各種文件操作

    本篇文章主要介紹Python的各種文件操作,適合剛?cè)腴T的小白或者對于文件操作基礎(chǔ)不太牢固的同學(xué),文中描述和代碼示例很詳細(xì),看完即可掌握,感興趣的小伙伴快來一起學(xué)習(xí)吧。 ??大家好!我是新人小白博主朦朧的雨夢,希望大家多多關(guān)照和支持?????? ??大家一起努

    2023年04月11日
    瀏覽(50)
  • 【Linux】32條指令帶你玩轉(zhuǎn) Linux !

    【Linux】32條指令帶你玩轉(zhuǎn) Linux !

    目錄 1,whoami 2,who 3,pwd 4,ls 1,ls? 2,ls -l 3,ls -a 4,ls -al 5,ls -d ?6,ls -ld 5,clear 6,cd 1,cd? 2,cd . 3,cd .. 4,cd /home/litao/linux/? 絕對路徑 5,cd ../day02/? ?相對路徑 6,cd ~ 7,cd - 7,tree 8,touch 9,mkdir 1,mkdir 2,mkdir -p 10,rmdir rm 1,rmdir 2,rm 3,rm -f 4,rm -r 5,rm -rf 6,

    2024年02月08日
    瀏覽(28)
  • 【C語言】帶你玩轉(zhuǎn)庫函數(shù)qsort

    【C語言】帶你玩轉(zhuǎn)庫函數(shù)qsort

    君兮_的個(gè)人主頁 勤時(shí)當(dāng)勉勵(lì) 歲月不待人 C/C++ 游戲開發(fā) Hello,米娜桑們,這里是君兮_,之前更新的一直是比較基礎(chǔ)和簡單的內(nèi)容,隨著博主自己的水平的提升,今天給大家?guī)睃c(diǎn)不一樣的東西,我們今天要講的是庫函數(shù)qsort的用法 廢話不多說,咱們直接開始吧! 很多人可能是

    2024年02月16日
    瀏覽(32)
  • 內(nèi)網(wǎng)穿透技術(shù) - 帶你玩轉(zhuǎn)Ngrok和NATAPP

    內(nèi)網(wǎng)穿透技術(shù) - 帶你玩轉(zhuǎn)Ngrok和NATAPP

    使用內(nèi)網(wǎng)穿透技術(shù),我們出差或者在家,就可以直接訪問到公司的電腦或者內(nèi)網(wǎng)網(wǎng)站,實(shí)現(xiàn)遠(yuǎn)程辦公。也可以將我們自己在局域網(wǎng)內(nèi)搭建的網(wǎng)站暴露出去,讓所有人都可以直接訪問到。 本文章主要介紹下內(nèi)網(wǎng)穿透工具Ngrok和NATAPP。 Ngrok 開源,老牌穿透工具 NATAPP 免費(fèi)隧道,提

    2024年02月15日
    瀏覽(21)
  • 帶你玩轉(zhuǎn) Vite + Vue3 高低版本常用玩法

    Vite 是一種新型前端構(gòu)建工具,在我們保險(xiǎn)前端項(xiàng)目中已經(jīng)推動(dòng)并應(yīng)用很久了,Vite 能夠顯著降低構(gòu)建時(shí)間,提升前端開發(fā)效率。 它主要由兩部分組成: 一個(gè)開發(fā)服務(wù)器,它基于 原生 ES 模塊 提供了 豐富的內(nèi)建功能,如速度快到驚人的 模塊熱更新(HMR) 一套構(gòu)建指令,它使

    2024年02月05日
    瀏覽(23)
  • 帶你玩轉(zhuǎn) ui 框架 ——scoped及樣式穿透問題詳解

    帶你玩轉(zhuǎn) ui 框架 ——scoped及樣式穿透問題詳解

    前言 在我們前端的開發(fā)中經(jīng)常會(huì)使用到各種 ui 框架 下面這兩個(gè)是比較火的,也是我常用的兩個(gè)ui框架。 問題描述 但是在使用框架的時(shí)候難免會(huì)遇到需要改變組件中的一些樣式,當(dāng)然如果我們所有頁面的組件樣式都是統(tǒng)一的話,我們可以進(jìn)行全局設(shè)置樣式,但是如果我們僅僅

    2023年04月21日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包