最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

在單鏈表中刪除指定的結(jié)點。這里單鏈表是用尾插法建立的,因為尾插法輸出的順序與輸入的順序是相同的。

#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("輸入要刪除的數(shù): ");
    scanf("%d",&m);
    p=head;//讓p指針從頭結(jié)點開始遍歷,要注意的是,頭結(jié)點是沒有數(shù)值的哦!
    while(p->data!=m&&p->next!=NULL)//循環(huán)查找要刪除的結(jié)點
    {
        r=p;
        p=p->next;//把p的下一個結(jié)點給p,所以p就不是原來的p了,原來的p變成了r
      if(p->data==m)//因為頭結(jié)點沒有數(shù)值,所以一開始就讓p=p->next是對的
      {
          r->next=p->next;//將要刪除結(jié)點的前一個結(jié)點指向它的下一個結(jié)點(原本是要指它的,現(xiàn)在指向它的下一個結(jié)點了)(r是要刪除結(jié)點的前一個結(jié)點)  
          delete(p);
      }//注意,這里的p->next已經(jīng)和第38行的p->next不一樣了,它是38行的下一個結(jié)點了
    }
    q=head->next;
    for(int i=0;i<n-1;i++)
    {
        printf("%d ",q->data);
        q=q->next;
    }
    return 0;
}

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

              1 2 3 4 5

              要刪除的數(shù):5

              輸出:1 2 3 4

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

              1 2 3 4 5

              要刪除的數(shù):1

              輸出: 2 3 4 5

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

              1 2 3 4 5

              要刪除的數(shù):2

              輸出:1 3 4 5

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

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

鏈表中刪除第i個結(jié)點

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é)點

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 ;
}

刪除鏈表中重復元素

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 ;
}

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

相關文章

  • c++ 對數(shù)器實現(xiàn)示例

    c++ 對數(shù)器實現(xiàn)示例

    對數(shù)器用于在自己的本地平臺驗證算法正確性,本文詳細的介紹了c++ 對數(shù)器實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C程序中唯一序列號的生成實例詳解

    C程序中唯一序列號的生成實例詳解

    這篇文章主要介紹了C程序中唯一序列號的生成實例詳解的相關資料,需要的朋友可以參考下
    2017-06-06
  • C++函數(shù)指針與指針函數(shù)有哪些關系和區(qū)別

    C++函數(shù)指針與指針函數(shù)有哪些關系和區(qū)別

    函數(shù)指針是一個指針變量,它可以存儲函數(shù)的地址,然后使用函數(shù)指針,這篇文章主要介紹了C++中函數(shù)指針與指針函數(shù)有哪些關系和區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值
    2022-08-08
  • 詳解C語言數(shù)據(jù)結(jié)構(gòu)之棧

    詳解C語言數(shù)據(jù)結(jié)構(gòu)之棧

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)之棧,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • C++指針與引用的異同

    C++指針與引用的異同

    這篇文章主要介紹了C++指針與引用的異同,文章以C++指針與引用的相關資料結(jié)合指針和引用的相同點和區(qū)別展開詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • C++示例講解vector容器

    C++示例講解vector容器

    這篇文章主要介紹了C++?容器?Vector?的使用方法,Vector?是一個能夠存放任意類型的動態(tài)數(shù)組,有點類似數(shù)組,是一個連續(xù)地址空間,下文更多詳細內(nèi)容的介紹,需要的小伙伴可以參考一下
    2022-07-07
  • 詳解C語言中scanf函數(shù)使用的一些注意點

    詳解C語言中scanf函數(shù)使用的一些注意點

    這篇文章主要介紹了C語言中scanf函數(shù)使用的一些注意點,scanf函數(shù)的使用是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2016-04-04
  • C++ 逗號運算符的具體使用

    C++ 逗號運算符的具體使用

    本文主要介紹了C++ 逗號運算符的具體使用,使用逗號運算符是為了把幾個表達式放在一起,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • QT5實現(xiàn)簡單的TCP通信的實現(xiàn)

    QT5實現(xiàn)簡單的TCP通信的實現(xiàn)

    本文主要介紹了QT5實現(xiàn)簡單的TCP通信的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • 詳解C++中const_cast與reinterpret_cast運算符的用法

    詳解C++中const_cast與reinterpret_cast運算符的用法

    這篇文章主要介紹了C++中const_cast與reinterpret_cast運算符的用法,經(jīng)常被用于表達式中的類型轉(zhuǎn)換,需要的朋友可以參考下
    2016-01-01

最新評論

静乐县| 那曲县| 济源市| 泊头市| 郸城县| 广平县| 贵溪市| 都兰县| 丰镇市| 清水河县| 汝南县| 来凤县| 泸西县| 忻城县| 岳池县| 邹城市| 易门县| 当阳市| 佳木斯市| 双鸭山市| 宁蒗| 合川市| 郧西县| 隆尧县| 玉溪市| 凌源市| 剑川县| 沂南县| 宜川县| 饶河县| 高州市| 栾城县| 松滋市| 六盘水市| 津市市| 和硕县| 徐汇区| 海原县| 阳泉市| 内黄县| 古丈县|