国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu) 線性表的定義和基本操作(以順序表為例)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 線性表的定義和基本操作(以順序表為例)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

名人說(shuō):一花獨(dú)放不是春,百花齊放花滿園。——《增廣賢文》
作者:Code_流蘇(CSDN)(一個(gè)喜歡古詩(shī)詞和編程的Coder??)

以下代碼個(gè)人分享出來(lái),僅供學(xué)習(xí)交流,且僅在CSDN平臺(tái)發(fā)布,未經(jīng)授權(quán)禁止二次轉(zhuǎn)發(fā)。

〇、線性表是什么?

1、定義

線性表是具有相同數(shù)據(jù)類型n(n>=0)個(gè)數(shù)據(jù)元素的有限序列,其中n為表長(zhǎng),當(dāng)n=0時(shí)線性表是一個(gè)空表。

L=(a1,a2,a3…,an) a1為表頭元素,an為表尾元素,除第一個(gè)元素外,每個(gè)元素有且僅有一個(gè)直接前驅(qū),除最后一個(gè)元素,每個(gè)元素有且僅有一個(gè)直接后繼。
數(shù)據(jù)結(jié)構(gòu) 線性表的定義和基本操作(以順序表為例),# 數(shù)據(jù)結(jié)構(gòu),# C/C++提高篇,算法,c++,數(shù)據(jù)結(jié)構(gòu),線性表,基本操作

2、特點(diǎn)
  • ①同類型
  • ②有限
  • ③有序
3、基本操作

數(shù)據(jù)結(jié)構(gòu) 線性表的定義和基本操作(以順序表為例),# 數(shù)據(jù)結(jié)構(gòu),# C/C++提高篇,算法,c++,數(shù)據(jù)結(jié)構(gòu),線性表,基本操作

那么該怎么用代碼實(shí)現(xiàn)基本操作呢?請(qǐng)往下看(以順序表為例)

一、代碼實(shí)現(xiàn)

#include <iostream>
using namespace std;

#define MaxSize 50
typedef int ElemType;
typedef struct {
    ElemType data[MaxSize];
    int length;
}SqList;

// 初始化線性表
void InitList(SqList &L) {
    L.length = 0;
}

// 銷毀線性表
void DestroyList(SqList &L) {
    L.length = 0;
}

// 在第i個(gè)位置插入元素e
bool ListInsert(SqList &L, int i, ElemType e) {
    if (i < 1 || i > L.length + 1) return false;
    if (L.length >= MaxSize) return false;
    for (int j = L.length; j >= i; j--)
        L.data[j] = L.data[j - 1];
    L.data[i - 1] = e;
    L.length++;
    return true;
}

// 刪除第i個(gè)位置的元素,并用e返回其值
bool ListDelete(SqList &L, int i, ElemType &e) {
    if (i < 1 || i > L.length) return false;
    e = L.data[i - 1];
    for (int j = i; j < L.length; j++)
        L.data[j - 1] = L.data[j];
    L.length--;
    return true;
}

// 按值查找,返回元素e的位序
int LocateElem(SqList L, ElemType e) {
    for (int i = 0; i < L.length; i++)
        if (L.data[i] == e) return i + 1;
    return 0;
}

// 按位查找,返回第i個(gè)位置的元素值
bool GetElem(SqList L, int i, ElemType &e) {
    if (i < 1 || i > L.length) return false;
    e = L.data[i - 1];
    return true;
}

// 返回線性表的長(zhǎng)度
int Length(SqList L) {
    return L.length;
}

// 輸出線性表
void PrintList(SqList L) {
    for (int i = 0; i < L.length; i++)
        cout << L.data[i] << " ";
    cout << endl;
}

// 判斷線性表是否為空
bool Empty(SqList L) {
    return L.length == 0;
}

int main() {
    SqList L;
    InitList(L);
    ListInsert(L, 1, 3);
    ListInsert(L, 2, 4);
    ListInsert(L, 3, 5);
    PrintList(L);
    
    int e = -1;
    ListDelete(L, 2, e);
    cout << "刪除的元素為:" << e << endl;
    
    PrintList(L);
    
    cout << "線性表長(zhǎng)度為:" << Length(L) << endl;
    
    cout << "元素4的位置為:" << LocateElem(L,4) << endl;

}

十萬(wàn)個(gè)為什么:代碼中為什么要傳入?yún)?shù)的引用“&”?

因?yàn)橄胍獙?對(duì)參數(shù)的修改結(jié)果 “帶回來(lái)”

二、思路闡明

順序表是一種線性表的存儲(chǔ)結(jié)構(gòu)。順序表使用一段連續(xù)的存儲(chǔ)單元來(lái)存儲(chǔ)數(shù)據(jù),每個(gè)數(shù)據(jù)元素占用一個(gè)存儲(chǔ)單元。

在實(shí)現(xiàn)上述代碼的過(guò)程中,首先使用了一個(gè)結(jié)構(gòu)體來(lái)定義順序表,其中又用了一個(gè)數(shù)組data來(lái)存儲(chǔ)數(shù)據(jù)元素,一個(gè)整型變量length用來(lái)記錄線性表的長(zhǎng)度。

之后實(shí)現(xiàn)了多種對(duì)順序表的操作,包括初始化、銷毀、插入、刪除、按值查找、按位查找、求長(zhǎng)度、輸出和判空。

  • InitList(&L)函數(shù):初始化線性表,將長(zhǎng)度設(shè)為0。
  • DestroyList(&L)函數(shù):銷毀線性表,將長(zhǎng)度設(shè)為0。
  • ListInsert(&L,i,e)函數(shù):在第i個(gè)位置插入元素e。首先判斷插入位置是否合法,然后將第i個(gè)位置及之后的元素后移一位,騰出空間插入新元素,最后將線性表長(zhǎng)度加1。
  • ListDelete(&L,i,&e)函數(shù):刪除第i個(gè)位置的元素,并用e返回其值。首先判斷刪除位置是否合法,然后將被刪除元素的值賦給e,再將第i個(gè)位置之后的元素前移一位,最后將線性表長(zhǎng)度減1。
  • LocateElem(L,e)函數(shù):按值查找,返回元素e的位序。遍歷線性表,找到第一個(gè)值等于e的元素并返回其位序。
  • GetElem(L,i)函數(shù):按位查找,返回第i個(gè)位置的元素值。首先判斷查找位置是否合法,然后返回第i個(gè)位置的元素值。
  • Length(L)函數(shù):返回線性表的長(zhǎng)度。
  • PrintList(L)函數(shù):輸出線性表。
  • Empty(L)函數(shù):判斷線性表是否為空。

最終按照順序表的操作順序,在main函數(shù)中進(jìn)行調(diào)用測(cè)試即可,具體測(cè)試見(jiàn)下方樣例測(cè)試,以上就是這段代碼的簡(jiǎn)要實(shí)現(xiàn)思路。

三、樣例測(cè)試

首先在1、2、3位置插入3、4、5的值,長(zhǎng)度為3,之后刪除值為4的元素,接著計(jì)算線性表的長(zhǎng)度,由一開(kāi)始的3變?yōu)榱?,也表明了刪除成功,在查找元素4的位置時(shí),由于元素4已經(jīng)被刪除了,所以在查找函數(shù)中返回了0。

3 4 5
刪除的元素為:4
3 5
線性表長(zhǎng)度為:2
元素4的位置為:0

--------------------------------
Process exited after 0.06322 seconds with return value 0
請(qǐng)按任意鍵繼續(xù). . .

? 部分內(nèi)容參考:王道數(shù)據(jù)結(jié)構(gòu)(B站/MOOC 咸魚(yú)學(xué)長(zhǎng)主講)
Code_流蘇(CSDN)(一個(gè)喜歡古詩(shī)詞和編程的Coder??)
如果對(duì)大家有幫助的話,希望大家能多多點(diǎn)贊+關(guān)注!這樣我動(dòng)力會(huì)更足哦! ?( ′???` )比心文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-520035.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu) 線性表的定義和基本操作(以順序表為例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)】單鏈表——單鏈表的定義及基本操作的實(shí)現(xiàn)(頭插、尾插、頭刪、尾刪、任意位置的插入與刪除)

    【數(shù)據(jù)結(jié)構(gòu)】單鏈表——單鏈表的定義及基本操作的實(shí)現(xiàn)(頭插、尾插、頭刪、尾刪、任意位置的插入與刪除)

    ?????作者: @情話0.0 ??專欄:《數(shù)據(jù)結(jié)構(gòu)》 ??個(gè)人簡(jiǎn)介:一名雙非編程菜鳥(niǎo),在這里分享自己的編程學(xué)習(xí)筆記,歡迎大家的指正與點(diǎn)贊,謝謝! ??順序表可以隨時(shí)存取表中的任意一個(gè)元素,它的存儲(chǔ)位置可以用一個(gè)簡(jiǎn)單直觀的公式表示,但是插入和刪除操作需要移動(dòng)

    2024年02月19日
    瀏覽(1193)
  • 數(shù)據(jù)結(jié)構(gòu)上機(jī)練習(xí)——單鏈表的基本操作、頭文件、類定義、main函數(shù)、多種鏈表算法的實(shí)現(xiàn),含注釋

    數(shù)據(jù)結(jié)構(gòu)上機(jī)練習(xí)——單鏈表的基本操作、頭文件、類定義、main函數(shù)、多種鏈表算法的實(shí)現(xiàn),含注釋

    ??頭文件和源文件分開(kāi)有很多好處:可以提高編譯速度、提高代碼的可維護(hù)性、提高代碼的可重用性和可擴(kuò)展性,同時(shí)也可以使代碼結(jié)構(gòu)更清晰,方便代碼的管理和維護(hù)。 LinkList.h test.cpp ????????????? ?? (下面所有函數(shù)都默認(rèn)在類中實(shí)現(xiàn)) ??我們以

    2024年02月07日
    瀏覽(98)
  • 數(shù)據(jù)結(jié)構(gòu)---雙向鏈表的基本操作

    頭插法 遍歷鏈表 尾插法 頭刪法 尾刪法 按位置插入數(shù)據(jù) 按位置刪除數(shù)據(jù) dooublelinklist.c doublelinklist.h doublemain.c

    2024年02月22日
    瀏覽(96)
  • 【數(shù)據(jù)結(jié)構(gòu)】——單鏈表的基本操作(帶頭結(jié)點(diǎn))

    【數(shù)據(jù)結(jié)構(gòu)】——單鏈表的基本操作(帶頭結(jié)點(diǎn))

    ? ? ? ? 單鏈表解決了順序表需要大量連續(xù)存儲(chǔ)單元的缺點(diǎn),但單鏈表附加指針域, 存儲(chǔ)密度較順序表低(考點(diǎn)!?。?。由于單鏈表的元素離散地分布在存儲(chǔ)空間中,所以單鏈表是 非隨機(jī)存取 的存儲(chǔ)結(jié)構(gòu),即不能直接找到表中某個(gè)特定的結(jié)點(diǎn)。當(dāng)查找某個(gè)特定結(jié)點(diǎn)時(shí),需要

    2024年02月05日
    瀏覽(100)
  • c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)——鏈表的實(shí)現(xiàn)及其基本操作

    c語(yǔ)言數(shù)據(jù)結(jié)構(gòu)——鏈表的實(shí)現(xiàn)及其基本操作

    順序表的問(wèn)題及思考 問(wèn)題: 中間/頭部的插入刪除,時(shí)間復(fù)雜度為O(N) 增容需要申請(qǐng)新空間,拷貝數(shù)據(jù),釋放舊空間。會(huì)有不小的消耗。 增容一般是呈2倍的增長(zhǎng),勢(shì)必會(huì)有一定的空間浪費(fèi)。例如當(dāng)前容量為100,滿了以后增容到 200,我們?cè)倮^續(xù)插入了5個(gè)數(shù)據(jù),后面沒(méi)有數(shù)據(jù)插

    2023年04月09日
    瀏覽(97)
  • 【數(shù)據(jù)結(jié)構(gòu)】單鏈表的基本操作 (C語(yǔ)言版)

    【數(shù)據(jù)結(jié)構(gòu)】單鏈表的基本操作 (C語(yǔ)言版)

    目錄 一、單鏈表 1、單鏈表的定義: 2、單鏈表的優(yōu)缺點(diǎn): 二、單鏈表的基本操作算法(C語(yǔ)言) 1、宏定義 2、創(chuàng)建結(jié)構(gòu)體 3、初始化 4、插入 4、求長(zhǎng)度 5、清空 6、銷毀? 7、取值 8、查找 9、刪除 10、頭插法創(chuàng)建單鏈表 11、尾插法創(chuàng)建單鏈表 三、單鏈表的全部代碼(C語(yǔ)言)

    2024年01月22日
    瀏覽(93)
  • 【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)單鏈表的基本操作

    【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)單鏈表的基本操作

    大家好,很高興又和大家見(jiàn)面啦?。?! 在上一篇中,我們?cè)敿?xì)介紹了單鏈表的兩種創(chuàng)建方式——頭插法與尾插法,相信大家現(xiàn)在對(duì)這兩種方式都已經(jīng)掌握了。今天咱們將繼續(xù)介紹單鏈表的基本操作——查找、插入與刪除。在開(kāi)始今天的內(nèi)容之前,我們先通過(guò)尾插法創(chuàng)建一個(gè)單

    2024年02月03日
    瀏覽(95)
  • 【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)雙鏈表的基本操作

    【數(shù)據(jù)結(jié)構(gòu)】C語(yǔ)言實(shí)現(xiàn)雙鏈表的基本操作

    大家好,很高興又和大家見(jiàn)面啦?。?! 經(jīng)過(guò)前面幾個(gè)篇章的內(nèi)容分享,相信大家對(duì)順序表和單鏈表的基本操作都已經(jīng)熟練掌握了。今天咱們將繼續(xù)分享線性表的鏈?zhǔn)酱鎯?chǔ)的第二種形式——雙鏈表。在今天的內(nèi)容中,咱們將介紹雙鏈表的創(chuàng)建以及一些基本操作,接下來(lái)跟我一起

    2024年02月04日
    瀏覽(98)
  • 【數(shù)據(jù)結(jié)構(gòu)】 循環(huán)雙鏈表的基本操作 (C語(yǔ)言版)

    【數(shù)據(jù)結(jié)構(gòu)】 循環(huán)雙鏈表的基本操作 (C語(yǔ)言版)

    目錄 一、循環(huán)雙鏈表 1、循環(huán)雙鏈表的定義: 2、循環(huán)雙鏈表的優(yōu)缺點(diǎn): 二、循環(huán)雙鏈表的基本操作算法(C語(yǔ)言)? ??1、宏定義 ?2、創(chuàng)建結(jié)構(gòu)體 3、循環(huán)雙鏈表的初始化? 4、循環(huán)雙鏈表按位查找 5、循環(huán)雙鏈表插入 6、循環(huán)雙鏈表查找 7、循環(huán)雙鏈表刪除 8、求循環(huán)雙鏈表長(zhǎng)

    2024年01月22日
    瀏覽(99)
  • 【數(shù)據(jù)結(jié)構(gòu)】 循環(huán)單鏈表的基本操作 (C語(yǔ)言版)

    【數(shù)據(jù)結(jié)構(gòu)】 循環(huán)單鏈表的基本操作 (C語(yǔ)言版)

    目錄 一、循環(huán)單鏈表 1、循環(huán)單鏈表的定義: 2、循環(huán)單鏈表的優(yōu)缺點(diǎn): 二、循環(huán)單鏈表的基本操作算法(C語(yǔ)言)?? ?1、宏定義 ?2、創(chuàng)建結(jié)構(gòu)體 3、循環(huán)單鏈表的初始化? 4、循環(huán)單鏈表的插入 5、求單鏈表長(zhǎng)度 6、循環(huán)單鏈表的清空 7、循環(huán)單鏈表的銷毀 8、循環(huán)單鏈表的取

    2024年01月22日
    瀏覽(93)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包