国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

單向鏈表的基本操作

2019-11-06 06:04:50
字體:
來源:轉載
供稿:網友

數據結構的基礎知識之一:單向鏈表的基本操作。

我專門寫了一個程序,其中包含盡可能多的鏈表操作。希望該程序能在工作中幫助到大家~同時也方便大家復習鏈表。

#include<iostream>#include<cstdlib>#include<algorithm>using namespace std;typedef int datatype;typedef struct node{	datatype data;	struct node *next;}linknode,*link;/*Createlist*/link CreateList(){	int a;	link H,p,r;	H = (link)malloc(sizeof(linknode));//建立頭節點	r = H;	cin>>a;	while(a != -1){		p = (link)malloc(sizeof(linknode));//申請新節點 		p->data = a;		r->next = p;		r = p;//存入數據,將新節點鏈入表尾 		cin>>a;	}	r->next = NULL;	return H;}/*查找*/link GetElem(link H,int i){	int j = -1;	link p = H;	if(i<0) return NULL;	while(p->next&&j<i){		p = p->next;		j++;	}	if(i==j) return p;	else return NULL;//查找失敗,即i>表長 }/*按值查找*/link LocateElem(link H,datatype e){	link p = H->next;	while(p && p->data!=e){		p = p->next;	}	return p;//若p->data==e則返回指針p;否則p必為空,返回NULL } /*將一定值e插在元素ai之前*/int ListInsert(link H,int i,datatype e){	link p,q;	p = GetElem(H,i-1);	if(p == NULL) return -1;	q = (link) malloc(sizeof(linknode));	q->data = e;	q->next = p->next;/*插入新節點*/	p->next = q;	return 0;}/*刪除*/int ListDel(link H,int i){	link p,q;	if(i==0) p = H;	else p = GetElem(H,i-1);	if(p && p->next){		q = p->next;		p->next = q->next;		free((char*)q);		return 0;	} 	return -1;} /*鏈表翻轉*/void L1nToLn1(link H){	link p,q;	p = H->next;	H->next = NULL;	while(p){		q = p;		p = p->next;		q->next = H->next;		H->next = q;	}} /*最大值返回前一個的指針*/link Adjmax(link H){	link p,p1,q;	int m0,m1;	p = H->next;	p1 = p;	if(p1 == NULL) return NULL;	q = p->next;	if(q == NULL) return NULL;/*表長為1*/	m0 = p->data+q->data;	while(q->next){		p = q;		q = q->next;		m1 = p->data+q->data;		if(m1>m0){			p1 = p;			m0 = m1;		}	} 	return p1;} /*鏈表合并并遞增*/void Merge(link A,link B){	link r,p,q;	p = A->next;	q = B->next;	free(B);	r = A;	while(p && q){		if(p->data <= q->data){			r->next = p;			r = p;			p = p->next;		}		else{			r->next = q;			r = q;			q = q->next;		}	}	if(p == NULL) p = q;	r->next = p;} void ListPRint(link H){	link a,b;	a = H->next;	while(a != NULL){		cout<<a->data<<"<";		b = a;		a = a->next;		free(b);	}}int main(){	link H;	H = CreateList();	L1nToLn1(H);	ListPrint(H);	return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 益阳市| 陈巴尔虎旗| 洛隆县| 常山县| 滕州市| 厦门市| 老河口市| 灌阳县| 基隆市| 威信县| 清徐县| 肥城市| 昭苏县| 邯郸市| 泰州市| 天门市| 商丘市| 西乌珠穆沁旗| 红原县| 莱州市| 黔西县| 安达市| 安远县| 时尚| 贵溪市| 东阿县| 鲁甸县| 石嘴山市| 宜丰县| 巩义市| 偃师市| 武鸣县| 六盘水市| 攀枝花市| 西宁市| 通城县| 丹巴县| 松桃| 三门县| 固镇县| 章丘市|