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

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

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

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

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

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

#include<iostream>

using namespace std;//使用std命名空間,省略后續(xù)代碼中得到std::前綴

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

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

2.鏈表

typedef struct Node{
	ElemType data;
	struct Node *next;	
}Node,Link;

3.初始化

初始化只需要把頭節(jié)點(diǎn)的next給進(jìn)行初始化即可,data數(shù)據(jù)直接放空,變成頭結(jié)點(diǎn)方便下面的數(shù)據(jù)操作。
也可以理解為放棄一部分空間,提高程序運(yùn)行速度。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-718083.html

/**
 * @brief 初始化
 * 
 * @param pl 
 * 
 * @return 
 **/
Status init(Link* pl){
	pl->next=NULL;
	return OK;
}

4.插入

/**
 * @brief 插值
 * 
 * @param l 鏈表
 * @param i 位置
 * @param e 元素
 * 
 * @return 
 **/
Status LinkInsert(Link *l,int i,ElemType e){
	Link *p=l,*t;
	int j=0;
	while(p&&j<i-1){//把指針移動(dòng)到要插入的位置
		//TODO
		p=p->next;
		j++;
	}
	if(!p||i<1){//i的合法性
		//TODO
		return ERROR;
	}
    //創(chuàng)建一個(gè)新結(jié)點(diǎn)放值,再把新節(jié)點(diǎn)放入鏈表中
	t=new Link;
	t->data=e;
	t->next=NULL;
	t->next=p->next;
	p->next=t;
	return OK;
}

5.取值

/**
 * @brief 取值 
 * 
 * @param h 
 * @param i 
 * 
 * @return 
 **/
ElemType GetElem(Link h,int i){
	Link *p=h.next;
	int j=1;
	while(j<i){//移動(dòng)指針到要獲取的結(jié)點(diǎn)
		p=p->next;
		j++;
	}
	return p->data;
}

6.查詢

/**
 * @brief 查值 
 * 
 * @param h 
 * @param e 
 * 
 * @return 
 **/
int LocateElemTyp(Link h,ElemType e){
	Link *p=h.next;
	int i=1;
	while(p){//e是否在鏈表內(nèi)
		//TODO
		if(p->data==e){
			//TODO
			return i;//也可以返回結(jié)點(diǎn)的地址
		}
		p=p->next;
		i++;
	}
	return ERROR;
}

7.刪除

/**
 * @brief 刪除元素 
 * 
 * @param h 
 * @param i 
 * 
 * @return 
 **/
Status deleteElem(Link *h,int i){
	Link *p=h,*t;
	
	for(int j=1;j<i;j++){//指向要?jiǎng)h除結(jié)點(diǎn)的前一個(gè)結(jié)點(diǎn)
		//TODO
		if(p==NULL) return ERROR;
		p=p->next;
	}
	t=p->next;
	p->next=t->next;
	delete t;
	return OK;
}

8.測(cè)試

int main(){
	Link link;
	init(&link);
	ElemType e=0;
	cout<<"請(qǐng)輸入5個(gè)需要放入的元素"<<endl;
	for(int i=1;i<=5;i++){
		//TODO
		cin>>e;
		LinkInsert(&link,i,e);
	}
	cout<<endl;
	cout<<"鏈表中的元素:";
	for(int i=1;i<=5;i++){
		//TODO
		cout<<"	"<<GetElem(link,i);
	}
	cout<<endl;
	cout<<"請(qǐng)輸入要查找的數(shù)據(jù):";
	cin>>e;
	cout<<LocateElemTyp(link,e);
	cout<<endl;
	cout<<"輸入要?jiǎng)h除元素的位置";
	int i;
	cin>>i;
	deleteElem(&link,i);
	cout<<endl;
	cout<<"鏈表中的元素:";
	for(int i=1;i<=5;i++){
		//TODO
		cout<<"	"<<GetElem(link,i);
	}
	return 0;
}

到了這里,關(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)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包