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

數(shù)據(jù)結(jié)構(gòu)-線性表-順序表

這篇具有很好參考價值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)-線性表-順序表。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)據(jù)結(jié)構(gòu)-線性表

線性表的定義:由n(n>=0)個數(shù)據(jù)特性相同的元素構(gòu)成的有限序列,稱為線性表。當(dāng)n=0時稱之為空表。

1.數(shù)據(jù)類型聲明

#define OK 1//定義一個宏,使用OK表示操作成功
#define ERROR 0//定義一個宏。使用ERROR表示操作失敗
#define OVERFLOW -2//定義宏,表示溢出操作

typedef int Status;//重命名為status用于表示函數(shù)的返回狀態(tài)
typedef int ElemType;//重命名為ElemType用于表示線性表數(shù)據(jù)元素類型

#define MAXSIZE 100//定義宏,表示線性表可能得最大空間

2.構(gòu)建線性表

typedef struct{
	ElemType elem[MAXSIZE];//定義了數(shù)組,用于存儲線性表中的元素
	int length;//表示當(dāng)前線性表的長度,順序表中的元素個數(shù)
}SqList;

3.初始化線性表

因為構(gòu)件線性表時元素數(shù)組已經(jīng)使用靜態(tài)分配,所以在此只需要對線性表的長度執(zhí)行初始化即可。

/**
 * @brief 初始化
 * 
 * @param L 線性表
 * 
 * @return 
 **/
Status InitList(SqList *L){
	L->length = 0;
	return OK;
}

4.獲取線性表中數(shù)據(jù)

獲取數(shù)據(jù)需要參數(shù):
sqList:需要給定一個線性表從而獲取數(shù)據(jù),因為只是拿值而沒有改變線性表的內(nèi)容,所以使用值傳遞即可。
i:需要給一個數(shù)值,確定要查找的數(shù)據(jù)在線性表的那個位置。
&e:需要一個地址變量,要把找到的值傳遞出去。

/**
 * @brief 獲取值
 * 
 * @param sqList 操作數(shù)組
 * @param i 數(shù)據(jù)位置
 * @param e 返回地址
 * 
 * @return 
 **/
Status GetElem(SqList sqList,int i,ElemType &e){
	if(i<1 || i>sqList.length){//判斷i是否合法,是否在線性表的范圍內(nèi)
		return ERROR;
	}
	e=sqList.elem[i];
	return OK;
}

5.查找線性表中數(shù)據(jù)

l:給定一個線性表,確定要在那個線性表中查詢數(shù)據(jù)。
e:給定一個元素,確定我們需要查找那個元素,返回在線性表中的位置

/**
 * @brief 查值
 * 
 * @param l 操作線性表
 * @param e 查找的元素
 * 
 * @return 返回所在位置
 **/
int LocateElemTyp(SqList l,ElemType e){
	for(int i=1;i<l.length;i++){//根據(jù)線性表的大小進(jìn)行遍歷
		if(l.elem[i]==e){//遍歷一遍進(jìn)行判斷是否是要查找的值
			return i;//如果是返回位置
		}
	}
	
	return ERROR;
}

6.插入數(shù)據(jù)

*p:給定一個線性表,因為需要改變線性表內(nèi)部數(shù)據(jù),所以需要傳遞進(jìn)一個線性表的地址。
i:給定一個位置,需要在那個位置插入數(shù)據(jù)。
e:給定一個元素,需要插入的元素。

/**
 * @brief 插入數(shù)據(jù)
 * 
 * @param p 
 * @param i 
 * @param e 
 * 
 * @return 
 **/
Status insertElem(SqList *p,int i,ElemType e){
	if(i<1||i>p->length||p->length==MAXSIZE){//對i的進(jìn)行合法判斷,是否在線性表的范圍內(nèi)、判斷線性表是否已滿
		//TODO
		return ERROR;
	}
	for(int j=p->length;j>=i;j--){//對線性表進(jìn)行數(shù)據(jù)后移,空出插入位置的空間
		//TODO
		p->elem[j]=p->elem[j-1];
	}
	p->elem[i]=e;
	p->length++;//表長度加一
	return OK;
}

7.刪除數(shù)據(jù)

*p:給定一個線性表的地址,刪除需要改變線性表的內(nèi)容所以需要一個線性表的地址
i:給定一個位置,確定要刪除的位置元素文章來源地址http://www.zghlxwxcb.cn/news/detail-715886.html

/**
 * @brief 刪除數(shù)據(jù)
 * 
 * @param p 
 * @param i 
 * 
 * @return 
 **/
Status deleteElem(SqList *p,int i){
	if(i<1||i>p->length){//判斷i在線性表中是否合法
		//TODO
		return ERROR;
	}
	
	for(int j=i;j<=p->length;j++){//直接對線性表數(shù)據(jù)進(jìn)行前置移位即可,直接覆蓋需要刪除的數(shù)據(jù)
		//TODO
		p->elem[j]=p->elem[j+1];
	}
	p->length--;//表長度減一
	return OK;
}

測試:

int main(){
	SqList sqlist;
	InitList(&sqlist);
	cout<<"請輸入要創(chuàng)建的線性表的元素個數(shù)(5個數(shù)據(jù))"<<endl;
	for(int i=1;i<=5;i++){
		cin>>sqlist.elem[i];
		sqlist.length++;
	}
	
	cout<<"線性表中的數(shù)據(jù)元素為:";
	for(int i=1;i<=5;i++){
		cout<<sqlist.elem[i]<<"  ";
	}
	cout<<endl;
	
	
	
	ElemType value;
	int index;
	cout<<"請輸入要查找的位置:";
	cin>>index;
	if(OK == GetElem(sqlist,index,value)){
		//TODO
		cout<<"位置為"<<index<<"值為"<<value<<" ";
	}else{
		cout<<"取值不合法";
	}
	
	cout<<endl;	
	value = 2;
	cout<<LocateElemTyp(sqlist,value);
	cout<<endl;
	
	if(OK==insertElem(&sqlist,3,2)){
		//TODO
		cout<<"插入成功";
	}
	cout<<"線性表中的數(shù)據(jù)元素為:";
	for(int i=1;i<sqlist.length;i++){
		cout<<sqlist.elem[i]<<"  ";
	}
	cout<<endl;
	
	if(OK==deleteElem(&sqlist,1)){
		//TODO
		cout<<"刪除成功";
	}
	cout<<"線性表中的數(shù)據(jù)元素為:";
	for(int i=1;i<sqlist.length;i++){
		cout<<sqlist.elem[i]<<"  ";
	}
	cout<<endl;
}

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)-線性表-順序表的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)---順序表示的線性表

    ? ? ? ? ?數(shù)據(jù)結(jié)構(gòu)(data structure)是帶有結(jié)構(gòu)特性的數(shù)據(jù)元素的集合,它研究的是數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的物理結(jié)構(gòu)以及它們之間的相互關(guān)系,并對這種結(jié)構(gòu)定義相適應(yīng)的運算,設(shè)計出相應(yīng)的算法,并確保經(jīng)過這些運算以后所得到的新結(jié)構(gòu)仍保持原來的結(jié)構(gòu)類型。簡言之,數(shù)據(jù)

    2024年02月16日
    瀏覽(24)
  • 數(shù)據(jù)結(jié)構(gòu)——線性表①(順序表)

    數(shù)據(jù)結(jié)構(gòu)——線性表①(順序表)

    線性表是一種數(shù)據(jù)結(jié)構(gòu),它是由n個具有 相同數(shù)據(jù)類型 的數(shù)據(jù)元素a1,a2,…,an組成的 有限序列 。 其中,除第一個元素a1外,每一個元素有且只有一個直接前驅(qū)元素,除了最后一個元素an外,每一個元素有且只有一個直接后繼元素。 線性表可以用 順序存儲結(jié)構(gòu) 或 鏈?zhǔn)酱鎯Y(jié)構(gòu)

    2024年02月06日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu): 線性表(順序表實現(xiàn))

    數(shù)據(jù)結(jié)構(gòu): 線性表(順序表實現(xiàn))

    線性表(linear list)是 n 個具有相同特性的數(shù)據(jù)元素的有序序列. 線性表是一種在實際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見的線性表: 順序表,鏈表,棧,隊列,字符串… 順序表是用一段 物理地址連續(xù) 的存儲單元依次存儲數(shù)據(jù)元素的線性結(jié)構(gòu),一般情況下采用數(shù)組存儲.在數(shù)組上完成數(shù)據(jù)的增刪

    2024年02月14日
    瀏覽(30)
  • 數(shù)據(jù)結(jié)構(gòu):線性表之-順序表

    數(shù)據(jù)結(jié)構(gòu):線性表之-順序表

    目錄 1.線性表概念 1.1 什么是順序列表 1.2 線性表 2.順序表實現(xiàn) 將有以下功能: 詳細(xì)過程 順序表的動態(tài)存儲 順序表初始化 尾插 擴容 頭插 更改后的尾插 尾刪 頭刪 打印 釋放內(nèi)存 優(yōu)化順序表 (任意位置插入刪除) 優(yōu)化后的頭插尾插 優(yōu)化后的頭刪尾刪 查找和刪除 進(jìn)行裝飾(菜單

    2024年02月10日
    瀏覽(94)
  • C/C++數(shù)據(jù)結(jié)構(gòu)---順序表---線性存儲結(jié)構(gòu)

    C/C++數(shù)據(jù)結(jié)構(gòu)---順序表---線性存儲結(jié)構(gòu)

    個人主頁: 仍有未知等待探索_小項目,洛谷刷題,數(shù)據(jù)結(jié)構(gòu)-CSDN博客 專題分欄---數(shù)據(jù)結(jié)構(gòu): 數(shù)據(jù)結(jié)構(gòu)_仍有未知等待探索的博客-CSDN博客 目錄 一、知識儲備 二、引例 ?三、順序表 第一步,先創(chuàng)建一個順序表類型 第二步,定義和初始化順序表?? ?第三步,順序表的基本操作

    2024年02月08日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】線性表和順序表

    【數(shù)據(jù)結(jié)構(gòu)】線性表和順序表

    Yan-英杰的主頁 悟已往之不諫 知來者之可追 目錄 1.線性表 2.順序表 ??????? 2.1 靜態(tài)順序表 ??????? 2.2 動態(tài)順序表 ??????? 2.3移除元素 ??????? 線性表( linear list )是n個具有相同特性的數(shù)據(jù)元素的有限序列。 線性表是一種在實際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見的線

    2023年04月08日
    瀏覽(94)
  • 數(shù)據(jù)結(jié)構(gòu)——線性表之順序表

    數(shù)據(jù)結(jié)構(gòu)——線性表之順序表

    目錄 一.線性表 二.順序表實現(xiàn) ?2.1 概念及結(jié)構(gòu) ?2.2 動態(tài)順序表 2.2.1 初始化與銷毀函數(shù) 2.2.2 打印函數(shù) 2.2.3?尾插函數(shù) 2.2.4 尾刪函數(shù) 2.2.5 擴容函數(shù) 2.2.6 頭插函數(shù) 2.2.7 頭刪函數(shù) 2.2.8 任意位置插入函數(shù) 2.2.9 查找函數(shù) 2.2.10 任意位置刪除函數(shù)? 2.2.11 修改函數(shù) 三.完整代碼 四.力扣

    2024年02月07日
    瀏覽(87)
  • 數(shù)據(jù)結(jié)構(gòu)(二)----線性表(順序表,鏈表)

    數(shù)據(jù)結(jié)構(gòu)(二)----線性表(順序表,鏈表)

    目錄 1.線性表的概念 2.線性表的基本操作 3.存儲線性表的方式 (1)順序表 ?順序表的概念 ?順序表的實現(xiàn) 靜態(tài)分配: 動態(tài)分配: 順序表的插入: 順序表的刪除: 順序表的按位查找: 順序表的按值查找: 順序表的特點: (2)單鏈表 ?單鏈表的實現(xiàn) 不帶頭結(jié)點的單鏈表

    2024年04月16日
    瀏覽(40)
  • 【數(shù)據(jù)結(jié)構(gòu)】線性表之順序表

    【數(shù)據(jù)結(jié)構(gòu)】線性表之順序表

    線性表是 n (n = 0) 個具有相同特性的數(shù)據(jù)元素的有限序列。線性表是一種在實際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見的線性表:順序表、鏈表、棧、隊列… 線性表在 邏輯上是線性結(jié)構(gòu) ,也就說是連續(xù)的一條直線。但是在 物理結(jié)構(gòu) 上并 不一定 是連續(xù)的線性表在物理上存儲時,通常以

    2024年02月04日
    瀏覽(91)
  • 【數(shù)據(jù)結(jié)構(gòu)】線性表與順序表

    【數(shù)據(jù)結(jié)構(gòu)】線性表與順序表

    ? 作者:小胡_不糊涂 ?? 作者主頁:小胡_不糊涂的個人主頁 ?? 收錄專欄:淺談數(shù)據(jù)結(jié)構(gòu) ?? 持續(xù)更文,關(guān)注博主少走彎路,謝謝大家支持 ?? 線性表(linear list) 是n個具有相同特性的數(shù)據(jù)元素的有限序列。 它是一種在實際中廣泛使用的數(shù)據(jù)結(jié)構(gòu),常見的線性表:順序表

    2024年02月07日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包