91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

順序表的查找、插入、刪除、合并操作及其優缺點

發布時間:2020-07-20 09:37:23 來源:網絡 閱讀:3600 作者:巖梟 欄目:編程語言

順序表的查找、插入、刪除、合并操作,用c++實現相關代碼:

#include<iostream>

using namespace std;


//定義線性表順序存儲結構

#define MAXSIZE 100  //線性表最大長度

typedef struct

{

//線性表占用數組空間

int elem[MAXSIZE];

//記錄線性表中最后一個元素在數組elem[]中的位置(下標值),空表置為-1

int last;

}SeqList;



//順序表的按內容查找運算

//在順序表L中查找與e相等的元素,若L.elem[i]=e,則找到該元素,并返回i+1,若找不到,則返回-1

int  Locate(SeqList L, int e)

{

//i為掃描計數器,初值為0,即從第一個元素開始比較

int i = 0;

//順序掃描表,直到找到值為e的元素或掃描到表尾而沒有找到

while ((i<=L.last)&&(L.elem[i]!=e))

{

i++;

}

if (i <= L.last)

{

return (i + 1);//若找到值為e的元素,則返回其序號

}

else

{

return -1;//若沒找到,則返回空序號

}

}


//順序表的插入運算

#define OK 1

#define ERROR 0

//在順序表L中第i個數據元素之前插入一個元素e,n個元素有n+1個插入位置,1<=i<=L->last + 2

int InsList(SeqList *L, int i, int e)

{

int k = 0;

if ((i<1) || (i>L->last + 2))//判斷插入位置是否合法

{

cout << "插入位置i值不合法!" << endl;

return (ERROR);

}

if (L->last >= MAXSIZE - 1)

{

cout << "表已滿,無法插入!" << endl;

return (ERROR);

}

for (k = L->last; k >= i - 1; k--)//為插入元素而移動位置

{

L->elem[k + 1] = L->elem[k];

}

L->elem[i - 1] = e;

L->last++;

return (OK);

}


//順序表的刪除運算

//在順序表L中刪除第i個數據元素,并用指針參數e返回其值,1<=i<=L->last + 1

int DelList(SeqList *L, int i, int *e)

{

int k = 0;

if ((i<1) || (i>L->last + 1))//判斷刪除位置是否合法

{

cout << "刪除位置不合法!" << endl;

return (ERROR);

}

*e = L->elem[i - 1];//將刪除的元素存放到e所指向的變量中

for (k = i; k <= L->last; k++)//將后面的元素依次前移

{

L->elem[k - 1] = L->elem[k];

}

L->last--;

return (OK);

}

int main()

{

        //

system("pause");

return 0;

}

例:有兩個順序表LA,LB,其元素均為非遞減有序排列,編寫算法將它們合并成一個順序表LC,要求LC也是非遞減有序排列。

解:算法如下:

//線性表的合并運算

void MergeList(SeqList *LA, SeqList *LB, SeqList *LC)

{

int i = 0, j = 0, k = 0;

while ((i <= LA->last) && (j <= LB->last))

{

if (LA->elem[i] <= LB->elem[j])

{

LC->elem[k] = LA->elem[i];

i++;

k++;

}

else

{

LC->elem[k] = LB->elem[j];

j++;

k++;

}

}

while (i <= LA->last)//當表LA有剩余元素時,則將表LA的剩余元素賦給表LC

{

LC->elem[k] = LA->elem[i];

i++;

k++;

}

while (j <= LB->last)//當表LB有剩余元素時,則將表LB的剩余元素賦給表LC

{

LC->elem[k] = LB->elem[j];

j++;

k++;

}

LC->last = LA->last + LB->last + 1;

}


順序表的優點:1.無須為表示結點間的邏輯關系而增加額外的存儲空間; 

              2.可方便隨機存取表中任一元素。

缺點:1.插入或刪除運算不方便;

      2.由于順序表要占用連續的存儲空間,存儲分配只能預先進行靜態分配,當表長變化較大時,難以確定合適的存儲規模。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汝城县| 舞钢市| 顺义区| 确山县| 那坡县| 杨浦区| 濮阳市| 黔江区| 临猗县| 永城市| 陕西省| 恩平市| 天全县| 渑池县| 宿迁市| 女性| 定边县| 成都市| 大英县| 焦作市| 南汇区| 斗六市| 廉江市| 手游| 博白县| 北安市| 镇巴县| 朝阳县| 图木舒克市| 池州市| 丁青县| 多伦县| 高州市| 普兰县| 峡江县| 鹰潭市| 瓮安县| 色达县| 于田县| 客服| 乐平市|