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

C++通過類實現(xiàn)線性表

 更新時間:2020年05月25日 10:36:03   作者:wwxy261  
這篇文章主要為大家詳細介紹了C++通過類實現(xiàn)線性表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++類實現(xiàn)線性表的具體代碼,供大家參考,具體內(nèi)容如下

下圖是標準C語言實現(xiàn)的函數(shù)定義

下面可以用C++實現(xiàn),第一個參數(shù)就是this的指針

list.h函數(shù)

#pragma once
typedef int Elem;
class List
{
public:
 List(int size);
 ~List();
 void ClearList();                  // 將數(shù)組長度設(shè)為0
 bool ListEmpty();                  // 判斷數(shù)組是否為空
 int ListLength();                  // 獲取數(shù)組長度
 bool GetElem(int i, Elem *e);            // 查找指定下標元素
 int LocateElem(Elem *e);              // 查找指定元素
 bool PriorElem(Elem *currentElem, Elem *preElem);  // 查找元素的前驅(qū)元素
 bool NextElem(Elem *currentElem, Elem *nextElem);  // 查找元素的后繼元素
 void ListTraverse();                // 遍歷線性表,輸出元素
 bool ListInsert(int i, Elem *e);          // 在指定位置插入一個元素
 bool ListDelete(int i, Elem *e);          // 刪除指定位置元素
private:
 int *m_pList;                    // 指向一塊內(nèi)存
 int m_iSize;                    // 內(nèi)存的大小
 int m_iLength;                   // 數(shù)組的長度
};

類的實現(xiàn),list.cpp

#include<iostream>
#include "List.h"
using namespace std;
 
List::List(int size)
{
 m_iSize = size;
 m_pList = new Elem[m_iSize];
 m_iLength = 0;
}
 
 
List::~List()
{
 delete[] m_pList; // 釋放數(shù)組內(nèi)存
 m_pList = NULL;
}
 
void List::ClearList()
{
 m_iLength = 0;
}
 
bool List::ListEmpty()
{
 return m_iLength == 0 ? true : false;
}
 
int List::ListLength()
{
 return m_iLength;
}
 
bool List::GetElem(int i, Elem *e)
{
 if (i < 0 || i >= m_iSize)
 {
 return false;
 }
 *e = m_pList[i];
 return true;
}
 
int List::LocateElem(Elem *e)
{
 for (int i = 0; i < m_iLength; i++)
 {
 if (m_pList[i] == *e)
 {
  return i;
 }
 }
 return -1;
}
 
bool List::PriorElem(Elem *currentElem, Elem *preElem)
{
 int temp = LocateElem(currentElem); // 查找元素的序號
 if (temp == -1)
 return false;
 else if (temp == 0)
 return false;
 else
 {
 *preElem = m_pList[temp - 1];
 return true;
 }
 
}
 
bool List::NextElem(Elem *currentElem, Elem *nextElem)
{
 int temp = LocateElem(currentElem); // 查找元素的序號
 if (temp == -1)
 return false;
 else if (temp == m_iLength - 1)
 return false;
 else
 {
 *nextElem = m_pList[temp + 1];
 return true;
 }
}
 
void List::ListTraverse()
{
 for (int i = 0; i < m_iLength; i++)
 {
 cout << m_pList[i] << endl;
 }
}
 
bool List::ListInsert(int i, Elem *e)
{
 if (i<0 || i>m_iLength)
 return false;
 for (int k=m_iLength-1;k>=i;k--)
 {
 m_pList[k + 1] = m_pList[k];
 }
 m_pList[i] = *e;
 m_iLength++;
 return true;
}
 
bool List::ListDelete(int i, Elem *e)
{
 if (i<0 || i>m_iLength)
 return false;
 *e = m_pList[i];
 for (int k = i + 1; k < m_iLength; k++)
 {
 m_pList[k - 1] = m_pList[k];
 } 
 m_iLength--;
 return true;
}

測試主程序

#include<iostream>
#include "List.h"
using namespace std;
 
int main()
{
 Elem temp;
 Elem arry[11] = { 3,5,7,2,9,1,8 };
 List *list1 = new List(10);
 cout << "length:" << list1->ListLength() << endl;
 for (int i = 0; i < 7; i++)
 {
 list1->ListInsert(i, &arry[i]);
 }
 cout << "length:" << list1->ListLength() << endl;
 // 刪除第一個元素
 list1->ListDelete(0, &temp);
 cout << temp << endl;
 // 搜索前驅(qū)元素
 list1->PriorElem(&arry[4], &temp);
 cout << temp << endl;
 list1->NextElem(&arry[4], &temp);
 cout << temp << endl;
 list1->ListTraverse();
 delete list1;
  return 0;
}

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

相關(guān)文章

  • C++隊列用法實例

    C++隊列用法實例

    這篇文章主要介紹了C++隊列用法,實例分析了C++實現(xiàn)隊列的入隊、出隊、讀取與判斷等相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • C++單例模式的幾種實現(xiàn)方法詳解

    C++單例模式的幾種實現(xiàn)方法詳解

    這篇文章主要為大家詳細介紹了C++單例模式的幾種實現(xiàn)方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++構(gòu)造函數(shù)的一些注意事項總結(jié)

    C++構(gòu)造函數(shù)的一些注意事項總結(jié)

    構(gòu)造函數(shù)是創(chuàng)建類對象,并且在創(chuàng)建完成前,對類進行初始化的特殊函數(shù),下面這篇文章主要給大家介紹了關(guān)于C++構(gòu)造函數(shù)的一些注意事項,需要的朋友可以參考下
    2021-11-11
  • C++中的構(gòu)造函數(shù)與析造函數(shù)詳解

    C++中的構(gòu)造函數(shù)與析造函數(shù)詳解

    這篇文章主要介紹了C++中的構(gòu)造函數(shù)與析造函數(shù)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語言實現(xiàn)簡單萬年歷

    C語言實現(xiàn)簡單萬年歷

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單萬年歷,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語言*與&在操作線性表的作用詳解

    C語言*與&在操作線性表的作用詳解

    本文主要介紹了C語言*與&在操作線性表的作用詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 基于C語言實現(xiàn)隨機點名器(附源碼)

    基于C語言實現(xiàn)隨機點名器(附源碼)

    這篇文章主要為大家詳細介紹如何基于C語言實現(xiàn)一個簡單的隨機點名器,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-07-07
  • 枚舉窗口句柄后關(guān)閉所有窗口示例

    枚舉窗口句柄后關(guān)閉所有窗口示例

    這篇文章主要介紹了關(guān)閉所有窗口的方法,原理是枚舉所有窗口句柄,然后發(fā)送WM_CLOSE消息來關(guān)閉窗口,需要的朋友可以參考下
    2014-01-01
  • C語言實現(xiàn)紙牌游戲之小貓釣魚算法

    C語言實現(xiàn)紙牌游戲之小貓釣魚算法

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)紙牌游戲之小貓釣魚算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • C語言三分鐘精通時間復(fù)雜度與空間復(fù)雜度

    C語言三分鐘精通時間復(fù)雜度與空間復(fù)雜度

    算法復(fù)雜度分為時間復(fù)雜度和空間復(fù)雜度。其作用:?時間復(fù)雜度是度量算法執(zhí)行的時間長短;而空間復(fù)雜度是度量算法所需存儲空間的大小
    2022-02-02

最新評論

西充县| 洮南市| 龙江县| 鄂州市| 东安县| 安丘市| 锡林郭勒盟| 文安县| 正宁县| 大港区| 桃园县| 银川市| 隆德县| 洞口县| 清徐县| 大埔县| 黑山县| 上饶县| 措勤县| 永胜县| 武冈市| 晋中市| 平果县| 平潭县| 陕西省| 仁布县| 黄骅市| 遂平县| 琼中| 会昌县| 疏附县| 林口县| 德保县| 特克斯县| 马鞍山市| 类乌齐县| 武清区| 白城市| 沈阳市| 望江县| 平舆县|