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

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

 更新時(shí)間:2017年04月11日 10:19:57   投稿:jingxian  
下面小編就為大家?guī)硪黄肅++類實(shí)現(xiàn)單向鏈表的增刪查和反轉(zhuǎn)操作方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

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

找網(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ù)
}

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

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

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

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

二、單結(jié)點(diǎn)

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é)點(diǎn)刪除

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é)點(diǎn)

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)上好多代碼都是新建一個(gè)鏈表,或者用到尾指針雙向鏈表之類,我覺得不會(huì)這么麻煩于是就想了這么個(gè)算法

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;  //如果把下面兩句換成這句,就會(huì)悲劇。
     q->next=l.h->next;
     l.h->next=q;
    }
  }

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

六、結(jié)語

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

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

相關(guān)文章

  • 在C++中如何阻止類被繼承詳解

    在C++中如何阻止類被繼承詳解

    這篇文章主要介紹了在C++中如何阻止類被繼承,對于C++初學(xué)者而言可以通過本文實(shí)例更好的理解類的原理及運(yùn)用,需要的朋友可以參考下
    2021-09-09
  • C++大整數(shù)加法解題思路及參考代碼

    C++大整數(shù)加法解題思路及參考代碼

    大整數(shù)加法的思路是用兩個(gè)數(shù)組儲(chǔ)存兩個(gè)整數(shù)的每一位然后分別相加,下面這篇文章主要給大家介紹了關(guān)于C++大整數(shù)加法解題思路及參考代碼的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • C語言舉例講解i++與++i之間的區(qū)別

    C語言舉例講解i++與++i之間的區(qū)別

    這篇文章主要介紹了C語言中i++和++i的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C語言內(nèi)存泄漏常見情況及解決方案詳解

    C語言內(nèi)存泄漏常見情況及解決方案詳解

    這篇文章主要為大家介紹了C語言內(nèi)存泄漏常見情況及解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 一文讓你不再害怕指針之C指針詳解(經(jīng)典,非常詳細(xì))

    一文讓你不再害怕指針之C指針詳解(經(jīng)典,非常詳細(xì))

    這篇文章主要給大家介紹了C指針的相關(guān)資料,文中介紹的很經(jīng)典,非常詳細(xì),文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用C指針具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • C++實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)化為后綴表達(dá)式詳解

    C++實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)化為后綴表達(dá)式詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C++解決實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式的問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解C語言內(nèi)核字符串轉(zhuǎn)換方法

    詳解C語言內(nèi)核字符串轉(zhuǎn)換方法

    在內(nèi)核開發(fā)模式下,初始化字符串也需要調(diào)用專用的初始化函數(shù),如下分別初始化ANSI和UNCODE字符串,本文我們就來看看代碼是如何實(shí)現(xiàn)的
    2022-09-09
  • C語言如何正確的終止正在運(yùn)行的子線程

    C語言如何正確的終止正在運(yùn)行的子線程

    這篇文章主要介紹了C語言如何正確的終止正在運(yùn)行的子線程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-02-02
  • 詳解C++?左值引用與?const?關(guān)鍵字

    詳解C++?左值引用與?const?關(guān)鍵字

    這篇文章主要介紹了C++?左值引用與?const?關(guān)鍵字,左值引用是已定義的變量的別名,其主要用途是用作函數(shù)的形參,將?const?關(guān)鍵字用于左值引用時(shí),其在初始化時(shí)可接受的賦值形式變得更加廣泛了,這里來總結(jié)一下,需要的朋友可以參考下
    2022-09-09
  • C/C++左旋字符串實(shí)現(xiàn)代碼舉例

    C/C++左旋字符串實(shí)現(xiàn)代碼舉例

    在C/C++語言中沒有專門的字符串變量,通常用字符數(shù)組來存放字符串,下面這篇文章主要給大家介紹了關(guān)于C/C++左旋字符串實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2023-12-12

最新評論

湟中县| 平泉县| 无棣县| 宁阳县| 桑植县| 石家庄市| 道真| 团风县| 土默特左旗| 镇沅| 安远县| 德令哈市| 内乡县| 凤山县| 新营市| 岫岩| 濉溪县| 依安县| 临猗县| 朝阳市| 龙游县| 沁源县| 镇原县| 保山市| 祁阳县| 东山县| 黔西| 芦山县| 山东省| 腾冲县| 黑龙江省| 来宾市| 东辽县| 桂东县| 木里| 长宁区| 濮阳县| 尖扎县| 交城县| 秭归县| 甘洛县|