成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

考研408數(shù)據(jù)結構代碼練習(C語言)——單鏈表部分-創(chuàng)新互聯(lián)

單鏈表:

根據(jù)開發(fā)經(jīng)驗,一般對數(shù)據(jù)的操作也就是**增刪改查。**最多外加幾個初始化賦值函數(shù)。
所有的i都是從第0個開始。這里的“改”沒有

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設,赤坎企業(yè)網(wǎng)站建設,赤坎品牌網(wǎng)站建設,網(wǎng)站定制,赤坎網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,赤坎網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。首先是定義和初始化函數(shù)

這里定義了單鏈表結構體;兩種初始化函數(shù)(帶頭結點和不帶頭結點)。
初始化鏈表函數(shù)是為了防止內存區(qū)域中存在臟數(shù)據(jù)。

#include#includetypedef struct LNode{int data; 
	struct LNode *next;
}LNode,*LinkList;

//零、初始化

bool InitList(LinkList &L){//帶頭
	L = NULL;
	return true;
}
bool InitListHead(LinkList &L){//不帶頭
	L = (LNode *) malloc(sizeof(LNode));//分配頭結點
	if(L == NULL)// 初始化失敗
		return false;
	L->next =NULL;// 頭結點后續(xù)初始化為空
	return true;
}
然后是插入節(jié)點的函數(shù)

一共是三種插入
1.帶頭結點的后繼插入
2.無頭節(jié)點后繼插入
3.前驅插入

bool ListInsertHead(LinkList &L,int i,int e){//(帶頭結點)在第i個位置插入元素e
	if(i<1){printf ("插入失敗 \n");
		return false;
	}
	LNode *p;
	int j=0;
	p = L;//p指向頭節(jié)點
	while(p!=NULL && jp = p->next;
		j++;//當前p指向第幾個節(jié)點
	}
	if(p==NULL){//i值不合法
		printf ("插入失敗 \n");
		return false;
	}
	LNode *s = (LNode *)malloc(sizeof(LNode));
	s->data = e;
	s->next = p->next;
	p->next = s;
	printf ("插入成功,插入節(jié)點序號為%d,插入數(shù)據(jù)為%d\n",j,e);
	return true;
}


bool ListInsert(LinkList &L,int i,int e){//(無頭)在第i個位置插入元素e

	if(i<1){printf ("插入失敗 \n");
		return false;
	}
	if(i==1){//插入第一個節(jié)點
		LNode *s = (LNode *)malloc(sizeof(LNode));
		s->data = e;
		s->next = L;
		L = s; //頭指針指向新插入的第一個節(jié)點
		return true;
	}
	LNode *p;
	int j=0;
	p = L;//p指向頭節(jié)點
	while(p!=NULL && jp = p->next;
		j++;//當前p指向第幾個節(jié)點
	}
	if(p==NULL){//i值不合法
		printf ("i值不合法,插入失敗 \n");
		return false;
	}
	LNode *s = (LNode *)malloc(sizeof(LNode));
	s->data = e;
	s->next = p->next;
	p->next = s;
	printf ("插入成功 \n");
	return true;
}
bool InsertPriorNode(LNode *p,int e){//在p節(jié)點之前插入節(jié)點

	if(p==NULL){//選擇節(jié)點為空
		printf ("選擇節(jié)點為空,插入失敗 \n");
		return false;
	}
	LNode *s =(LNode *)malloc(sizeof(LNode));
	s->next = p->next;
	p->next = s;
	s->data = p->data;
	p->data = e;
	printf ("前插成功,插入數(shù)據(jù)為%d \n",e);
	return true;
}
刪除函數(shù)

1.刪除第i個位置的節(jié)點

int ListDelete(LinkList &L,int i,int &e){//刪除指定第i個節(jié)點
	if(i<1){printf ("i值有誤,刪除失敗 \n");
		return false;
	}
	LNode *p;
	int j=0;
	p = L;//p指向頭節(jié)點
	while(p!=NULL && jp = p->next;
		j++;//當前p指向第i-1個節(jié)點
	}
	if(p->next == NULL){e = p->data;
		free(p);
		printf ("刪除成功,刪除節(jié)點序號為%d,刪除數(shù)據(jù)為%d\n",++j,e);
	}
	if(p==NULL){//i值不合法
		printf ("刪除失敗 \n");
		return false;
	}
	LNode *s = p->next;
	e = s->data;
	p->next = s->next;
	free(s);
	printf ("刪除成功,刪除節(jié)點序號為%d,刪除數(shù)據(jù)為%d\n",++j,e);
	return e;
}

bool DeleteNode(LNode *p){if(p==NULL){//選擇節(jié)點為空
		printf ("選擇節(jié)點為空,插入失敗 \n");
		return false;
	}

	if(p->next == NULL){free(p);
		printf ("刪除成功\n");
	}
	LNode *q = p->next; //新建q指向待刪除節(jié)點p的后繼
	p->data = q->data;//p的后繼值付給p
	p->next = q->next;//p指向p的后繼
	free(q);//釋放q
	return true;
}
查找函數(shù)
int selectElem(LinkList &L,int data){//返回和data相等的位置i
    LinkList T=L;
    int i=0;
    while (T->next) {if (T->data == data) {return i;
        }
        T=T->next;
        if (T->data == data) {return ++i;
        }
        i++;
    }
    return 2333;
}
int selectAllHead(LinkList L){//遍歷
	if(L == NULL)
		return 2333;
    LinkList T=L;
    int i=0;
    while (T) {printf("第%d->%d\n",i,T->data);
        T=T->next;
		i++;
    }
	return 1;
}

改就是查到之后賦個值。

直接跑的全部代碼
#include#include#define max 10
typedef struct LNode{int data; 
	struct LNode *next;
}LNode,*LinkList;
void text (int &x ){x=100;
}
//零、初始化


bool InitList(LinkList &L){L = NULL;
	printf ("初始化成功 \n");
	return true;
}
bool InitListHead(LinkList &L){L = (LNode *) malloc(sizeof(LNode));//分配頭結點
	if(L == NULL){// 初始化失敗
		printf ("初始化失敗 \n");
		return false;
	}
	L->next =NULL;// 頭結點后續(xù)初始化為空
	printf ("初始化成功 \n");
	return true;
}





//一、增

bool ListInsertHead(LinkList &L,int i,int e){//(帶頭結點)在第i個位置插入元素e

	if(i<1){printf ("插入失敗 \n");
		return false;
	}
	LNode *p;
	int j=0;
	p = L;//p指向頭節(jié)點
	while(p!=NULL && jp = p->next;
		j++;//當前p指向第幾個節(jié)點
	}
	if(p==NULL){//i值不合法
		printf ("插入失敗 \n");
		return false;
	}
	LNode *s = (LNode *)malloc(sizeof(LNode));
	s->data = e;
	s->next = p->next;
	p->next = s;
	printf ("插入成功,插入節(jié)點序號為%d,插入數(shù)據(jù)為%d\n",j,e);
	return true;
}


bool ListInsert(LinkList &L,int i,int e){//(無頭)在第i個位置插入元素e

	if(i<1){printf ("插入失敗 \n");
		return false;
	}
	if(i==1){//插入第一個節(jié)點
		LNode *s = (LNode *)malloc(sizeof(LNode));
		s->data = e;
		s->next = L;
		L = s; //頭指針指向新插入的第一個節(jié)點
		return true;
	}
	LNode *p;
	int j=0;
	p = L;//p指向頭節(jié)點
	while(p!=NULL && jp = p->next;
		j++;//當前p指向第幾個節(jié)點
	}
	if(p==NULL){//i值不合法
		printf ("i值不合法,插入失敗 \n");
		return false;
	}
	LNode *s = (LNode *)malloc(sizeof(LNode));
	s->data = e;
	s->next = p->next;
	p->next = s;
	printf ("插入成功 \n");
	return true;
}
bool InsertPriorNode(LNode *p,int e){//在p節(jié)點之前插入節(jié)點

	if(p==NULL){//選擇節(jié)點為空
		printf ("選擇節(jié)點為空,插入失敗 \n");
		return false;
	}
	LNode *s =(LNode *)malloc(sizeof(LNode));
	s->next = p->next;
	p->next = s;
	s->data = p->data;
	p->data = e;
	printf ("前插成功,插入數(shù)據(jù)為%d \n",e);
	return true;
}




//二、刪

int ListDelete(LinkList &L,int i,int &e){//刪除指定第i個節(jié)點
	if(i<1){printf ("i值有誤,刪除失敗 \n");
		return false;
	}
	LNode *p;
	int j=0;
	p = L;//p指向頭節(jié)點
	while(p!=NULL && jp = p->next;
		j++;//當前p指向第i-1個節(jié)點
	}
	if(p->next == NULL){e = p->data;
		free(p);
		printf ("刪除成功,刪除節(jié)點序號為%d,刪除數(shù)據(jù)為%d\n",++j,e);
	}
	if(p==NULL){//i值不合法
		printf ("刪除失敗 \n");
		return false;
	}
	LNode *s = p->next;
	e = s->data;
	p->next = s->next;
	free(s);
	printf ("刪除成功,刪除節(jié)點序號為%d,刪除數(shù)據(jù)為%d\n",++j,e);
	return e;
}

bool DeleteNode(LNode *p){if(p==NULL){//選擇節(jié)點為空
		printf ("選擇節(jié)點為空,插入失敗 \n");
		return false;
	}

	if(p->next == NULL){free(p);
		printf ("刪除成功\n");
	}
	LNode *q = p->next; //新建q指向待刪除節(jié)點p的后繼
	p->data = q->data;//p的后繼值付給p
	p->next = q->next;//p指向p的后繼
	free(q);//釋放q
	return true;
}

//三、改
int UpdateElem(LinkList &L,int i,int e){//將第i個節(jié)點的數(shù)據(jù)改為e
    LinkList T=L;
	LNode *p;
    int j=0;
    p = L;//p指向頭節(jié)點
	while(p!=NULL && jp = p->next;
		j++;//當前p指向第i-1個節(jié)點
	}
	if(p->next == NULL){printf ("更新失敗\n");
		return 2333;
	}
	p->next->data = e;
	printf ("更新成功\n");
    return 2333;
}

//四、查

int selectElem(LinkList &L,int data){//返回和data相等的位置i
    LinkList T=L;
    int i=0;
    while (T->next) {if (T->data == data) {return i;
        }
        T=T->next;
        if (T->data == data) {return ++i;
        }
        i++;
    }
    return 2333;
}
int selectAllHead(LinkList L){//遍歷
	if(L == NULL)
		return 2333;
    LinkList T=L;
    int i=0;
    while (T) {printf("第%d->%d\n",i,T->data);
        T=T->next;
		i++;
    }
	return 1;
}
int main()
{int i = 1;
	int e = 10; 
	int num[3] = {1,2,3};
	LinkList L;
	InitListHead(L);//帶頭結點初始化
	

	ListInsertHead(L,i,e);//插入第一個節(jié)點
	for(int j=0;j<3;j++){ListInsertHead(L,i+j+1,num[j]);//在i后面插入第j+1個節(jié)點
		
	}

	LNode *p=L->next->next;
	InsertPriorNode(p,e+1);//插入第2個位置,值為11

	LNode *q=L->next;
	InsertPriorNode(q,e+3);//選擇第一1結點前插



	
	selectAllHead(L);//遍歷鏈表
	int se = selectElem(L,3);//查找特定值
	printf ("%d\n",se);

	UpdateElem(L,3,se+100);
	selectAllHead(L);
	

	int ld = ListDelete(L,6,se);//刪除第6的節(jié)點
	printf ("被刪除值為%d\n",ld);
	selectAllHead(L);

	
   return 0;
}

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當前題目:考研408數(shù)據(jù)結構代碼練習(C語言)——單鏈表部分-創(chuàng)新互聯(lián)
新聞來源:http://jinyejixie.com/article24/dcjdce.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗標簽優(yōu)化、虛擬主機移動網(wǎng)站建設、Google、云服務器

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設
沂源县| 昌宁县| 定州市| 时尚| 秭归县| 大城县| 临漳县| 安岳县| 宿松县| 吴堡县| 云霄县| 南木林县| 凤凰县| 昌黎县| 耒阳市| 武清区| 商丘市| 台山市| 梓潼县| 阆中市| 大方县| 新源县| 丰县| 周口市| 田东县| 桃源县| 大姚县| 邛崃市| 古丈县| 汤原县| 庄河市| 剑河县| 宁陵县| 奇台县| 阳山县| 康平县| 静宁县| 上虞市| 乌兰县| 嘉祥县| 华阴市|