欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn)

 更新時(shí)間:2022年07月13日 09:45:50   作者:nefu_lmy  
這篇文章主要介紹了C語(yǔ)言中如何實(shí)現(xiàn)單鏈表刪除指定結(jié)點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

單鏈表刪除指定結(jié)點(diǎn)

在單鏈表中刪除指定的結(jié)點(diǎn)。這里單鏈表是用尾插法建立的,因?yàn)槲膊宸ㄝ敵龅捻樞蚺c輸入的順序是相同的。

#include <bits/stdc++.h>
using namespace std;
 
typedef struct node
{
    int data;
    struct node *next;
}no;
 
int main()
{
    no *head,*tail,*p,*r,*q;
    head=new no;
    head->next=NULL;
    tail=head;
    int n,k;
    printf("一共要輸入的數(shù): ");
    scanf("%d\n",&n);
    //尾插法建立單鏈表
    for(int i=0;i<n;i++)
    {
        cin>>k;
        p=new no;
        p->data=k;
        p->next=NULL;
        tail->next=p;
        tail=p;
    }
    //接下來是刪除操作
    int m;
    printf("輸入要?jiǎng)h除的數(shù): ");
    scanf("%d",&m);
    p=head;//讓p指針從頭結(jié)點(diǎn)開始遍歷,要注意的是,頭結(jié)點(diǎn)是沒有數(shù)值的哦!
    while(p->data!=m&&p->next!=NULL)//循環(huán)查找要?jiǎng)h除的結(jié)點(diǎn)
    {
        r=p;
        p=p->next;//把p的下一個(gè)結(jié)點(diǎn)給p,所以p就不是原來的p了,原來的p變成了r
      if(p->data==m)//因?yàn)轭^結(jié)點(diǎn)沒有數(shù)值,所以一開始就讓p=p->next是對(duì)的
      {
          r->next=p->next;//將要?jiǎng)h除結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)指向它的下一個(gè)結(jié)點(diǎn)(原本是要指它的,現(xiàn)在指向它的下一個(gè)結(jié)點(diǎn)了)(r是要?jiǎng)h除結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn))  
          delete(p);
      }//注意,這里的p->next已經(jīng)和第38行的p->next不一樣了,它是38行的下一個(gè)結(jié)點(diǎn)了
    }
    q=head->next;
    for(int i=0;i<n-1;i++)
    {
        printf("%d ",q->data);
        q=q->next;
    }
    return 0;
}

測(cè)試一:一共要輸入的數(shù):5

              1 2 3 4 5

              要?jiǎng)h除的數(shù):5

              輸出:1 2 3 4

測(cè)試二:一共要輸入的數(shù):5

              1 2 3 4 5

              要?jiǎng)h除的數(shù):1

              輸出: 2 3 4 5

測(cè)試三:一共要輸入的數(shù):5

              1 2 3 4 5

              要?jiǎng)h除的數(shù):2

              輸出:1 3 4 5

鏈表的刪除結(jié)點(diǎn)(各種方法)

先建立鏈表(代碼在最后)

鏈表中刪除第i個(gè)結(jié)點(diǎn)

int main()
{
? ? int i;
? ? Node *p,*head,*k;
? ? head=setlink();
? ? scanf("%d",&i);
? ? int v=1;
? ? for(p=head->next;p!=NULL;k=p,p=p->next) ?
? ? {
?? ??? ?if(v==i)break;
?? ??? ?else{
?? ??? ??? ?v++;
?? ??? ?}
?? ??? ? ??
? ? }
?? ??? ?k->next=p->next;
?? ?
?? ? delete(p);
?? ? ? ?for(p=head->next;p!=NULL;p=p->next)
?? ??? ? ? printf("%d ",p->id);
?? ? return 0 ;
}

刪除與鏈表中與a相同的結(jié)點(diǎn)

int main()
{
?? ?int a;
?? ?Node *p,*q,*heada,*k;
?? ?heada=setlink();
?? ?scanf("%d",&a);
?? ?for(p=heada->next;p!=NULL;k=p,p=p->next) ?
?? ?{
?? ??? ?if(p->id==a)
?? ??? ?{
?? ??? ??? ?q=p;
?? ??? ??? ?k->next=p->next;
?? ??? ??? ?p=k->next;
?? ??? ??? ?delete(q);
?? ??? ?}
?
?? ?}
?? ?for(p=heada->next;p!=NULL;p=p->next)
?? ??? ?printf("%d ",p->id);
?? ?return 0 ;
}

刪除鏈表中重復(fù)元素

int main()
{
?? ?Node *p,*q,*heada,*k,*ptr;
?? ?heada=setlink();
?? ?for(p=heada->next;p!=NULL;p=p->next) ?
?? ?{
?? ??? ?k=p;
?? ??? ?for(q=p->next;q!=NULL;k=q,q=q->next)
?? ??? ?{
?? ??? ?if(p->id==q->id)
?? ??? ?{
?? ??? ??? ?ptr=q;
?? ??? ??? ?k->next=q->next;
?? ??? ??? ?q=k;
?? ??? ??? ?free(ptr);
?? ??? ?}
?? ??? ?}
?? ?}
?? ?for(p=heada->next;p!=NULL;p=p->next)
?? ??? ?printf("%d ",p->id);
?? ?return 0 ;
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Matlab繪制中國(guó)地圖超全教程詳解

    Matlab繪制中國(guó)地圖超全教程詳解

    這篇文章主要介紹了如何利用Matlab繪制中國(guó)地圖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定的幫助,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-02-02
  • Qt出現(xiàn)假死凍結(jié)現(xiàn)象的原因及解決方法

    Qt出現(xiàn)假死凍結(jié)現(xiàn)象的原因及解決方法

    應(yīng)用程序出現(xiàn)假死或凍結(jié)現(xiàn)象通常是由于一些常見問題所導(dǎo)致的,本文主要介紹了Qt出現(xiàn)假死凍結(jié)現(xiàn)象的原因及解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • 使用VS2022開發(fā)在線遠(yuǎn)程編譯部署的C++程序(圖文詳解)

    使用VS2022開發(fā)在線遠(yuǎn)程編譯部署的C++程序(圖文詳解)

    這篇文章主要介紹了使用VS2022開發(fā)可以在線遠(yuǎn)程編譯部署的C++程序,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • 七夕表白! C語(yǔ)言實(shí)現(xiàn)愛情紅玫瑰

    七夕表白! C語(yǔ)言實(shí)現(xiàn)愛情紅玫瑰

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)愛情紅玫瑰,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C++中的Lambda表達(dá)式及表達(dá)式語(yǔ)句

    C++中的Lambda表達(dá)式及表達(dá)式語(yǔ)句

    這篇文章主要介紹了C++中的Lambda表達(dá)式及表達(dá)式語(yǔ)句,表達(dá)式這個(gè)概念在C++中屬于比較細(xì)節(jié)的知識(shí)了,很多時(shí)候我們只用知道怎么用,對(duì)于編譯器內(nèi)部怎么處理我們并不關(guān)心;并且關(guān)于左值和右值這個(gè)概念,也是C++比較深的一個(gè)小知識(shí)點(diǎn),需要的朋友可以參考一下
    2021-12-12
  • C語(yǔ)言基礎(chǔ)文件操作方式超全詳解建議收藏

    C語(yǔ)言基礎(chǔ)文件操作方式超全詳解建議收藏

    這篇文章主要為大家介紹了關(guān)于C語(yǔ)言文件操作方式的詳細(xì)總結(jié),建議收藏隨用隨看,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • Sersync+Rsync實(shí)現(xiàn)觸發(fā)式文件同步實(shí)戰(zhàn)過程

    Sersync+Rsync實(shí)現(xiàn)觸發(fā)式文件同步實(shí)戰(zhàn)過程

    sersync是使用c++編寫,而且對(duì)linux系統(tǒng)文 件系統(tǒng)產(chǎn)生的臨時(shí)文件和重復(fù)的文件操作進(jìn)行過濾。下面通過本文給大家分享Sersync+Rsync實(shí)現(xiàn)觸發(fā)式文件同步實(shí)戰(zhàn)過程,需要的朋友參考下吧
    2017-09-09
  • C語(yǔ)言自制測(cè)色弱找方塊游戲的示例代碼

    C語(yǔ)言自制測(cè)色弱找方塊游戲的示例代碼

    這篇文章主要介紹了基于C語(yǔ)言自制測(cè)色弱找方塊的游戲。該游戲是仿照最近網(wǎng)上流行的找方塊游戲編寫的,可玩性還是挺高的,感興趣的可以了解一下
    2022-12-12
  • C++基于hook iat改變Messagebox實(shí)例

    C++基于hook iat改變Messagebox實(shí)例

    這篇文章主要介紹了C++基于hook iat改變Messagebox的方法,以實(shí)例形式展示了針對(duì)IAT(即導(dǎo)入地址表)以及hook的操作,有助于深入理解Windows程序設(shè)計(jì)原理,需要的朋友可以參考下
    2014-10-10
  • C語(yǔ)言如何計(jì)算兩個(gè)數(shù)的最小公倍數(shù)

    C語(yǔ)言如何計(jì)算兩個(gè)數(shù)的最小公倍數(shù)

    這篇文章主要介紹了C語(yǔ)言如何計(jì)算兩個(gè)數(shù)的最小公倍數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論