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

C++數(shù)據(jù)結構之鏈表的創(chuàng)建

 更新時間:2022年05月20日 09:25:42   作者:infoworld  
這篇文章主要介紹了C++數(shù)據(jù)結構之鏈表的創(chuàng)建的相關資料,希望通過本文幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下

C++數(shù)據(jù)結構之鏈表的創(chuàng)建

前言

1.鏈表在C/C++里使用非常頻繁, 因為它非常使用, 可作為天然的可變數(shù)組. push到末尾時對前面的鏈表項不影響. 反觀C數(shù)組和std::vector, 一個是靜態(tài)大小, 一個是增加多了會對之前的元素進行復制改寫(線程非常不安全).

2.通常創(chuàng)建鏈表都是有next這樣的成員變量指向下一個項, 通過定義一個head,last來進行鏈表創(chuàng)建. 參考函數(shù) TestLinkCreateStupid().

說明

1.其實很早就知道另一種創(chuàng)建方式, 但是一直沒總結. 沒見過的童鞋看看以下創(chuàng)建鏈表的方式你用了哪一種. linus說了不會第一種的TestLinkCreateClever()根本不會用指針(看來我真不會用指針). 這種方式在循環(huán)里根本不用判斷, 可見效率有多高.

// test_shared.cpp : 定義控制臺應用程序的入口點。
//

#include "stdafx.h"
#include <memory>
#include <string>
#include <iostream>

typedef struct stage_tag {
  int         data_ready;   /* Data present */
  long        data;      /* Data to process */
  struct stage_tag  *next;     /* Next stage */
} stage_t;

// 高效率的鏈表創(chuàng)建方式
stage_t* TestLinkCreateClever(int stages)
{
  stage_t *head = NULL,*new_stage = NULL,*tail = NULL;
  stage_t **link = &head; // 區(qū)別在這個指針地址變量上,它起到綁定新的stage的作用.
  for(int i =0; i<stages;++i)
  {
    new_stage = (stage_t*)malloc(sizeof(stage_t));   
    new_stage->data_ready = 0;
    new_stage->data = i;

    *link = new_stage; // 把新的stage賦值給link指向的指針地址
    link = &new_stage->next; // 綁定下一個的指針地址
  }

  tail = new_stage;
  *link = NULL;

  return head;
}

// 低效率的鏈表創(chuàng)建方式
stage_t* TestLinkCreateStupid(int stages)
{
  stage_t *head = NULL,*new_stage = NULL,*tail = NULL;
  for(int i =0; i<stages;++i)
  {
    new_stage = (stage_t*)malloc(sizeof(stage_t));   
    new_stage->data_ready = 0;
    new_stage->data = i;
    new_stage->next = NULL;

    if(tail)
      tail->next = new_stage;
    else
      head = new_stage;

    tail = new_stage;
  }
  return head;
}

int _tmain(int argc, _TCHAR* argv[])
{
  std::cout << "=== TestLinkCreateClever ===" << std::endl;
  auto first = TestLinkCreateClever(10);
  while(first)
  {
    std::cout << "data: " << first->data << std::endl;
    first = first->next;
  }

  std::cout << "=== TestLinkCreateStupid ===" << std::endl;
  auto second = TestLinkCreateStupid(10);
  while(second)
  {
    std::cout << "data: " << second->data << std::endl;
    second = second->next;
  }
  return 0;
}


如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • c++歸并排序詳解

    c++歸并排序詳解

    歸并排序遵循分治法的思想:將原問題分解為幾個規(guī)模較小但類似于原問題的子問題,遞歸地求解這些子問題,然后再合并這些子問題的解來建立原問題的解。分治模式在每層遞歸時都有三個步驟:分解、解決、合并。歸并排序完全遵循該模式。
    2017-05-05
  • C++函數(shù)重載的深入解析

    C++函數(shù)重載的深入解析

    在C++中,我們也能夠把具有相同功能的函數(shù)整合到一個函數(shù)上,而不必去寫好多個函數(shù)名不同的函數(shù),這叫做函數(shù)的重載。以下是對C++中的函數(shù)重載進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-07-07
  • Qt開發(fā)之QTreeWidget的使用教程詳解

    Qt開發(fā)之QTreeWidget的使用教程詳解

    這篇文章主要為大家詳細介紹了Qt中QTreeWidget使用的相關資料,文中的示例代碼講解詳細,對我們學習Qt有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • C++命名空間 namespace詳解

    C++命名空間 namespace詳解

    定義命名空間,使用namespace關鍵字,后面跟命名空間的名字,然后接一對花括號{ } 即可,{ }中即為命名空間的成員,這篇文章主要介紹了C++命名空間 namespace,需要的朋友可以參考下
    2023-04-04
  • windows下如何安裝OpenCL

    windows下如何安裝OpenCL

    這篇文章主要介紹了windows下如何安裝OpenCL,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • C語言/C++如何生成隨機數(shù)

    C語言/C++如何生成隨機數(shù)

    這篇文章主要介紹了C語言/C++如何生成隨機數(shù),C語言/C++產(chǎn)生隨機數(shù)主要用到的是rand()函數(shù), srand()函數(shù),C語言/C++里沒有自帶的random(int number)函數(shù),如何解決?感興趣的小伙伴們可以參考一下
    2016-04-04
  • C語言 完整游戲項目坦克大戰(zhàn)詳細代碼

    C語言 完整游戲項目坦克大戰(zhàn)詳細代碼

    《坦克大戰(zhàn)》以二戰(zhàn)坦克為題材,既保留了射擊類游戲的操作性,也改進了射擊類游戲太過于復雜難玩的高門檻特點,集休閑與競技于一身。經(jīng)典再度襲來,流暢的畫面,瘋狂的戰(zhàn)斗,讓玩家再次進入瘋狂坦克的世界。玩家的目標是控制坦克躲避危險,消滅掉所有的敵人即可進入下一關
    2021-11-11
  • C++ 非遞歸實現(xiàn)二叉樹的前中后序遍歷

    C++ 非遞歸實現(xiàn)二叉樹的前中后序遍歷

    本文將結合動畫和代碼演示如何通過C++ 非遞歸實現(xiàn)二叉樹的前中后序的遍歷,代碼具有一定的價值,感興趣的同學可以學習一下
    2021-11-11
  • C++實現(xiàn)高校人員信息管理系統(tǒng)

    C++實現(xiàn)高校人員信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)高校人員信息管理系統(tǒng)項,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言中的初階指針詳解

    C語言中的初階指針詳解

    這篇文章主要介紹了C語言中的初階指針,介紹了其相關概念,具有一定參考價值。需要的朋友可以了解下,希望能夠給你帶來幫助
    2021-10-10

最新評論

毕节市| 休宁县| 府谷县| 南雄市| 石泉县| 隆安县| 渝中区| 孝昌县| 开化县| 稷山县| 同仁县| 金阳县| 德化县| 天水市| 永嘉县| 富川| 湘阴县| 昆山市| 甘肃省| 安吉县| 西乡县| 赣榆县| 屏山县| 大安市| 富民县| 三都| 商河县| 麻江县| 汉阴县| 忻州市| 淮北市| 东平县| 罗江县| 乳源| 南平市| 滁州市| 蚌埠市| 福鼎市| 浮梁县| 象山县| 肇东市|