欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

用C++類實現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

數(shù)據(jù)結(jié)構(gòu)這東西,理解起來不算難,但是實現(xiàn)難度就不小了,雖然思路很清晰,但不知道從何下手還有語言的細(xì)節(jié)問題一直是阻礙初學(xué)者的主要障礙(比如我)。今天用了一下午時間終于獨立完成了鏈表操作。

找網(wǎng)上的代碼,大多用了結(jié)構(gòu)體,還有些并不適合剛學(xué)c++或者數(shù)據(jù)結(jié)構(gòu)的人看,于是我是用類寫的,代碼比較符合學(xué)生的習(xí)慣和水平。

先看類定義

class node
{
public:
  int data;
  node *next;
};
class linklist
{
  node *h;
  ……//一些函數(shù)
}

兩個類,node用來表示結(jié)點,node *next,表示next是指向node型的指針(一些同學(xué)看不懂這句,會和構(gòu)造函數(shù)弄混),linklist類是存放頭指針和定義操作函數(shù)用的。

一、整表的創(chuàng)建

整表創(chuàng)建有兩種方法,頭插(倒敘)和尾插(順序),這里只說頭插。

void head(linklist &l,int n)
  {
    node *p;
    p=new node;
    l.h=p;//定義頭結(jié)點和投指針
    p->data=n;//頭指針的數(shù)據(jù)域是結(jié)點個數(shù)
    p->next=NULL;//最末結(jié)點的后繼必須為空
    for(int i=0;i<n;i++)//創(chuàng)建n個新結(jié)點
    {
      node *q=new node;
      cin>>q->data;
      q->next=p->next;
      p->next=q;//每個新結(jié)點都放在頭結(jié)點后面
    }
  }

二、單結(jié)點插入

void insert(linklist &l,int n,int num)
  {
    node *p=l.h;
    for(int i=0;i<n;i++)
    {
      p=p->next;
    }//找到插入的位置
    node *q=new node;
    q->next=p->next;
    p->next=q;
    q->data=num;
  }

三、單結(jié)點刪除

void del(linklist &l,int n)
  {
    node *p=l.h;
    for(int i=0;i<n-1;i++)
    {
      p=p->next;
    }//找到刪除的位置
    node *q=p;
    q=q->next;
    p->next=q->next;
    delete q;//釋放空間
  }

四、查找結(jié)點

void search(linklist &l,int n)
  {
    node *p=l.h;
    for(int i=0;i<n;i++)
    {
      p=p->next;
    }
    cout<<p->data<<endl;
  }

五、倒置

由于頭插是倒敘輸出,就想倒置,網(wǎng)上好多代碼都是新建一個鏈表,或者用到尾指針雙向鏈表之類,我覺得不會這么麻煩于是就想了這么個算法

void reverse(linklist l)
  {
    node *p=l.h;
    node *q;
    p=p->next;
    while(p->next)
    {
     q=p->next;
     p->next=q->next;
    // q->next=p;  //如果把下面兩句換成這句,就會悲劇。
     q->next=l.h->next;
     l.h->next=q;
    }
  }

一下午時間主要就耽誤在這里了,我一開始寫的就是注釋那句話,后來總是輸出頭結(jié)點的數(shù)據(jù),仔細(xì)觀察發(fā)現(xiàn)原來是頭指針跟著頭結(jié)點換到了最后面,然后這個問題通過下面兩句解決,保證頭指針永遠(yuǎn)在表頭。

六、結(jié)語

寫到這里,終于明白為什么網(wǎng)上包括書上很多代碼都是看懂容易寫起來難,因為書或者博客作者就不會把他犯過的錯誤貼出來,一些簡單的代碼也沒有很多注釋,自己寫的時候也理解他們了,想詳細(xì)寫出每一步的理由還是太難了,無法表達(dá)的東西太多,所以想掌握一個東西還是親手實踐,多犯錯誤才能進(jìn)步,因為書上或網(wǎng)上很難找到細(xì)節(jié)之處易犯的錯誤,以為自己會了的時候就用紙寫出來,到頭來會發(fā)現(xiàn)還是不會……循環(huán)幾次,就差不多了。

以上這篇用C++類實現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持我們。

上一篇:VS2013安裝配置和使用Boost庫教程

欄    目:C語言

下一篇:C++實現(xiàn)String類實例代碼

本文標(biāo)題:用C++類實現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1648.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有