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

C++實(shí)現(xiàn)簡(jiǎn)單單向鏈表

 更新時(shí)間:2020年05月25日 11:40:25   作者:悟名堂  
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)簡(jiǎn)單單向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C++實(shí)現(xiàn)簡(jiǎn)單單向鏈表的具體代碼,供大家參考,具體內(nèi)容如下

為了練習(xí)一下對(duì)鏈表的理解,嘗試手動(dòng)造輪子,實(shí)現(xiàn)單向鏈表的右添加,左添加和刪除的功能。

頭文件

#pragma once
#include<iostream>
using namespace std;
struct Node//節(jié)點(diǎn)
{
 int value;
 Node* next;
 Node(int a = 0, Node* n = NULL) :value(a), next(n) {}
};
class List
{
private:
 Node* head = NULL;//頭指針
 Node* tail = NULL;//尾指針,便于在尾部添加節(jié)點(diǎn)
 int size = 0;
public:
 int getSize() { return size; }//獲取鏈表大小
 void print();//打印鏈表
 void append(int a);//右添加
 void appendleft(int a);//左添加
 void remove(int a);//刪除節(jié)點(diǎn)
};

源文件

#include "List.h"

void List::append(int a)
{
 Node *p = new Node(a);
 if (head)
 {
 tail->next = p;
 tail = p;
 }
 else
 {
 head = p;
 tail = p;
 }
 size++;
}
void List::appendleft(int a)
{
 Node *p = new Node(a);
 if (head)
 {
 p->next = head;
 head = p;
 }
 else
 {
 head = p;
 tail = p;
 }
 size++;
}
void List::remove(int a)
{
 Node* p = head;
 bool flag = false;
 if (!head)
 {
 flag = false;
 cout << "鏈表已空,無需刪除!" << endl;
 }
 else if (head->value == a && head != tail)
 {
 head = head->next;
 delete p;
 size--;
 flag = true;
 cout << "刪除成功!" << endl;
 }
 else if (head->value == a && head == tail)
 {
 head = NULL, tail = NULL;
 delete p;
 size--;
 flag = true;
 cout << "刪除成功!" << endl;
 }
 else
 {
 Node*q = head->next;
 while (q)
 {
  if (q->value == a && q != tail)
  {
  p->next = q->next;
  delete q;
  size--;
  flag = true;
  cout << "刪除成功!" << endl;
  break;
  }
  else if (q->value == a && q == tail)
  {
  p->next = NULL;
  tail = p;
  delete q;
  size--;
  flag = true;
  cout << "刪除成功!" << endl;
  break;
  }
  else
  {
  p = q;
  q = p->next;
  }
 }
 if (!flag)
  cout << "查無此值:" << a << endl;
 }
}
void List::print()
{
 if (!head)
 cout << "鏈表為空,無法輸出!" << endl;
 else
 {
 cout << "鏈表為:" ;
 Node*p = head;
 while (p)
 {
  cout << p->value << " ";
  p = p->next;
 }
 cout << endl;
 }
}

主程序驗(yàn)證

int main()
{
 List list1;
 list1.append(3);
 list1.append(4);
 list1.appendleft(5);
 list1.appendleft(6);
 list1.append(2);
 cout << "----鏈表大小:" << list1.getSize() << endl;
 list1.print();
 list1.remove(5);
 cout << "----鏈表大小:" << list1.getSize() << endl;
 list1.print();
 list1.remove(7);
 cout << "----鏈表大小:" << list1.getSize() << endl;
 list1.print();
 list1.remove(6);
 cout << "----鏈表大小:" << list1.getSize() << endl;
 list1.print();
 list1.remove(4);
 cout << "----鏈表大小:" << list1.getSize() << endl;
 list1.print();
 list1.remove(3);
 cout << "----鏈表大小:" << list1.getSize() << endl;
 list1.print();
 list1.remove(2);
 cout << "----鏈表大小:" << list1.getSize() << endl;
 list1.print();
 system("pause");
 return 0;
}

驗(yàn)證結(jié)果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++單例模式實(shí)現(xiàn)線程池的示例代碼

    C++單例模式實(shí)現(xiàn)線程池的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C++單例模式簡(jiǎn)單實(shí)現(xiàn)一個(gè)線程池,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • 在iOS中給視頻添加濾鏡的方法示例

    在iOS中給視頻添加濾鏡的方法示例

    這篇文章主要介紹了在iOS中給視頻添加濾鏡的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vs運(yùn)行時(shí)報(bào)C4996代碼錯(cuò)誤的問題解決

    vs運(yùn)行時(shí)報(bào)C4996代碼錯(cuò)誤的問題解決

    C4996錯(cuò)誤的意思:是VS覺得strcpy這函數(shù)不安全,建議你使更安全的函數(shù),那么如何解決呢,本文主要介紹了vs運(yùn)行時(shí)報(bào)C4996代碼錯(cuò)誤的問題解決,感興趣的可以了解一下
    2024-01-01
  • 利用C語言編寫“剪刀石頭布”小游戲

    利用C語言編寫“剪刀石頭布”小游戲

    這篇文章主要給大家介紹了關(guān)于如何利用C語言編寫“剪刀石頭布”小游戲的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++中priority_queue模擬實(shí)現(xiàn)的代碼示例

    C++中priority_queue模擬實(shí)現(xiàn)的代碼示例

    在c++語言中數(shù)據(jù)結(jié)構(gòu)中的堆結(jié)構(gòu)可以通過STL庫中的priority_queue 優(yōu)先隊(duì)列來實(shí)現(xiàn),這樣做極大地簡(jiǎn)化了我們的工作量,這篇文章主要給大家介紹了關(guān)于C++中priority_queue模擬實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • C/C++實(shí)現(xiàn)枚舉網(wǎng)上鄰居信息的示例詳解

    C/C++實(shí)現(xiàn)枚舉網(wǎng)上鄰居信息的示例詳解

    在Windows系統(tǒng)中,通過網(wǎng)絡(luò)鄰居可以方便地查看本地網(wǎng)絡(luò)中的共享資源和計(jì)算機(jī),本文將介紹一個(gè)簡(jiǎn)單的C++程序,使用Windows API枚舉網(wǎng)絡(luò)鄰居信息,并獲取對(duì)端名稱、本機(jī)名稱、主機(jī)名稱以及主機(jī)IP等信息,文中通過代碼示例給大家講解非詳細(xì),需要的朋友可以參考下
    2023-12-12
  • VC中CDC、HDC、pDC區(qū)別與聯(lián)系及相互轉(zhuǎn)換

    VC中CDC、HDC、pDC區(qū)別與聯(lián)系及相互轉(zhuǎn)換

    這篇文章主要介紹了VC中CDC、HDC、pDC區(qū)別與聯(lián)系及相互轉(zhuǎn)換的方法,非常的詳細(xì),有需要的小伙伴可以參考下,希望對(duì)大家學(xué)習(xí)VC能夠有所幫助。
    2015-11-11
  • C++的template模板中class與typename關(guān)鍵字的區(qū)別分析

    C++的template模板中class與typename關(guān)鍵字的區(qū)別分析

    這篇文章中我們來談一談C++的template模板中class與typename關(guān)鍵字的區(qū)別分析,同時(shí)會(huì)講到嵌套從屬名稱時(shí)的一些注意點(diǎn),需要的朋友可以參考下
    2016-06-06
  • 一文詳解C++中運(yùn)算符的使用

    一文詳解C++中運(yùn)算符的使用

    這篇文章主要為大家詳細(xì)介紹了C++中運(yùn)算符的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-05-05
  • C++采用ring3讀取MBR實(shí)例

    C++采用ring3讀取MBR實(shí)例

    這篇文章主要介紹了C++采用ring3讀取MBR實(shí)例,可實(shí)現(xiàn)對(duì)硬盤的主引導(dǎo)記錄的讀取,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-10-10

最新評(píng)論

富顺县| 隆德县| 张家口市| 青阳县| 乐亭县| 临高县| 南宁市| 玉山县| 梨树县| 澎湖县| 六盘水市| 波密县| 临洮县| 深水埗区| 岳普湖县| 封丘县| 浪卡子县| 东源县| 靖宇县| 镇江市| 林周县| 嵊泗县| 丹寨县| 家居| 颍上县| 乃东县| 张掖市| 阳曲县| 广平县| 阿瓦提县| 南宁市| 开化县| 志丹县| 东源县| 镇江市| 九寨沟县| 叶城县| 博湖县| 新巴尔虎左旗| 胶南市| 乌拉特前旗|