黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 單鏈表刪除節(jié)點(diǎn)的方法

單鏈表刪除節(jié)點(diǎn)的方法

更新時(shí)間:2022-09-01 10:26:32 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1210次

從鏈表中刪除給定節(jié)點(diǎn)。

例子

鏈表:102030無效的

輸入

20

輸出

1030無效的

輸入

30

輸出

1020無效的

算法

1.如果頭節(jié)點(diǎn)有給定的key,

使頭節(jié)點(diǎn)指向第二個(gè)節(jié)點(diǎn)并釋放其內(nèi)存。

2. 否則,

從當(dāng)前節(jié)點(diǎn),檢查下一個(gè)節(jié)點(diǎn)是否有給定的key

如果是,則使 current->next = current->next->next 并釋放內(nèi)存。

否則,將當(dāng)前節(jié)點(diǎn)更新為下一個(gè)節(jié)點(diǎn)并執(zhí)行上述過程(從步驟 2 開始)直到最后一個(gè)節(jié)點(diǎn)。

頭節(jié)點(diǎn)具有給定的密鑰

void  deleteNode ( struct node ** head, int key)
{
      //temp用于釋放內(nèi)存
      struct node * temp;     
      //在頭節(jié)點(diǎn)上找到的鍵。
      //移動(dòng)到頭節(jié)點(diǎn)到下一個(gè)并釋放頭。
      if ( * head -> data == key)
      {
          溫度=  *頭;    //備份head以釋放內(nèi)存
          * head = ( * head) -> next;
          免費(fèi)(臨時(shí));
      }    
}

視覺表現(xiàn)

讓我們刪除數(shù)據(jù) 10(頭節(jié)點(diǎn))。

對(duì)于其他節(jié)點(diǎn)(Non-Head)

void  deleteNode ( struct node ** head, int key)
{
      //temp用于釋放內(nèi)存
      struct node * temp;
      //在頭節(jié)點(diǎn)上找到的鍵。
      //移動(dòng)到頭節(jié)點(diǎn)到下一個(gè)并釋放頭。
      如果((*頭)->數(shù)據(jù)==鍵)
      {
          溫度=  *頭;    //備份釋放內(nèi)存
          * head = ( * head) -> next;
          免費(fèi)(臨時(shí));
      }      
      別的
      {
          結(jié)構(gòu)節(jié)點(diǎn)*當(dāng)前  =  *頭;
          而(當(dāng)前->下一個(gè)!=  NULL)
          {
              //如果是,我們需要?jiǎng)h除當(dāng)前->下一個(gè)節(jié)點(diǎn)
              if (current -> next -> data == key)
              {
                  臨時(shí)=當(dāng)前->下一個(gè);
                  //節(jié)點(diǎn)將與鏈表斷開連接。
                  當(dāng)前->下一個(gè)=當(dāng)前->下一個(gè)->下一個(gè);
                  免費(fèi)(臨時(shí));
                  休息;
              }
              //否則,移動(dòng)當(dāng)前節(jié)點(diǎn)并繼續(xù)
              else 
                  current = current -> next;
          }
      }    
}

視覺表現(xiàn)

讓我們刪除數(shù)據(jù) 20

刪除鏈表中節(jié)點(diǎn)的實(shí)現(xiàn)

例子

#include<stdio.h> 
#include<stdlib.h>
結(jié)構(gòu)節(jié)點(diǎn)
{
    整數(shù)數(shù)據(jù);
    結(jié)構(gòu)節(jié)點(diǎn)*下一個(gè);
};
void  addLast ( struct node ** head, int val)
{
    //創(chuàng)建一個(gè)新節(jié)點(diǎn)
    struct node * newNode = malloc( sizeof ( struct node));
    新節(jié)點(diǎn)->數(shù)據(jù)= val;
    新節(jié)點(diǎn)->下一個(gè)     =  NULL ;
    //如果head為NULL,它是一個(gè)空列表
    if ( * head ==  NULL )
          * head = newNode;
    //否則,找到最后一個(gè)節(jié)點(diǎn),添加newNode 
    else
    {
        結(jié)構(gòu)節(jié)點(diǎn)* lastNode =  *頭;
        //最后一個(gè)節(jié)點(diǎn)的下一個(gè)地址將為NULL。
        while (lastNode -> next !=  NULL )
        {
            最后一個(gè)節(jié)點(diǎn)=最后一個(gè)節(jié)點(diǎn)->下一個(gè);
        }
        //在鏈表末尾添加newNode 
        lastNode -> next = newNode;
    }
}
void  deleteNode ( struct node ** head, int key)
{
      //temp用于釋放內(nèi)存
      struct node * temp;
      //在頭節(jié)點(diǎn)上找到的鍵。
      //移動(dòng)到頭節(jié)點(diǎn)到下一個(gè)并釋放頭。
      如果((*頭)->數(shù)據(jù)==鍵)
      {
          溫度=  *頭;    //備份釋放內(nèi)存
          * head = ( * head) -> next;
          免費(fèi)(臨時(shí));
      }
      別的
      {
          結(jié)構(gòu)節(jié)點(diǎn)*當(dāng)前  =  *頭;
          而(當(dāng)前->下一個(gè)!=  NULL)
          {
              //如果是,我們需要?jiǎng)h除當(dāng)前->下一個(gè)節(jié)點(diǎn)
              if (current -> next -> data == key)
              {
                  臨時(shí)=當(dāng)前->下一個(gè);
                  //節(jié)點(diǎn)將與鏈表斷開連接。
                  當(dāng)前->下一個(gè)=當(dāng)前->下一個(gè)->下一個(gè);
                  免費(fèi)(臨時(shí));
                  休息;
              }
              //否則,移動(dòng)當(dāng)前節(jié)點(diǎn)并繼續(xù)
              else 
                  current = current -> next;
          }
      }
}
無效 打印列表(結(jié)構(gòu)節(jié)點(diǎn)*頭)
{
    結(jié)構(gòu)節(jié)點(diǎn)*溫度=頭;
    //迭代整個(gè)鏈表并打印數(shù)據(jù)
    while (temp !=  NULL )
    {
         printf( "%d ->" , temp -> data);
         溫度=溫度->下一個(gè);
    }
    printf( "NULL \n " );
}
主函數(shù) ()
{
     結(jié)構(gòu)節(jié)點(diǎn)*頭=  NULL ;
     addLast( &頭, 10 );
     addLast( &頭, 20 );
     addLast( &頭, 30 );
     printf( "鏈表元素:\n " );
     打印列表(頭);
     //刪除第一個(gè)節(jié)點(diǎn)
     deleteNode( & head, 10 );
     printf( "刪除10.新鏈表:\n " );
     打印列表(頭);
     //刪除最后一個(gè)節(jié)點(diǎn)
     deleteNode( & head, 30 );
     printf( "刪除 30. 新鏈表:\n " );
     打印列表(頭);
     //刪除 20 
     deleteNode( & head, 20 );
     printf( "已刪除 20. 新鏈表:\n " );
     打印列表(頭);
     返回 0 ;
}

 

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 欧美精品一区视频 | 亚洲综合色秘密影院秘密影院 | 欧美成人做性视频在线播放 | 色综合色综合色综合 | 人人模人人 | 97干视频| 欧美日本一道高清免费3区 欧美日本一二三区 | 亚洲h在线观看 | 国产日韩精品一区二区在线观看 | 污视频网站在线免费看 | 黄色免费在线视频 | 日本在线网 | 国产高清一区二区三区四区 | 成人黄激情免费视频 | 国产成人综合91精品 | 国产青草视频免费观看97 | 欧美一区二区在线观看 | 免费成人一级片 | 午夜骚 | 亚洲 欧美 日韩 另类 | 国产在线精品一区二区中文 | 欧美精品国产一区二区 | free性丰满hd性欧 | 亚洲伊人久久综合一区二区 | 日韩在线视频第一页 | 91短视频黄 | 丝袜美女网 | 涩涩涩视频在线观看免费 | h片在线播放免费高清 | aaaa一级片| 在线看福利片 | 一级片免费视频 | 动漫成年美女黄漫网站在线看 | 成人短视频在线观看视频 | 2020天堂中文字幕一区在线观 | 日本免费一区二区三区中文 | 黄色午夜网站 | 中文字幕在线日韩 | 国产视频久 | 久青草视频在线 | 羞羞视频在线免费 |