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

溫馨提示×

溫馨提示×

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

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

C語言怎么實現單鏈表的基本功能

發布時間:2021-11-24 17:46:33 來源:億速云 閱讀:173 作者:iii 欄目:開發技術

本篇內容主要講解“C語言怎么實現單鏈表的基本功能”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“C語言怎么實現單鏈表的基本功能”吧!

1.首先簡單了解一下鏈表的概念:

C語言怎么實現單鏈表的基本功能

要注意的是鏈表是一個結構體實現的一種線性表,它只能從前往后,不可以從后往前(因為next只保存下一個節點的地址).在實現單鏈表的操作時,需要用指針來操作.很簡單,注釋寫的很詳細,歡迎大家指正哈哈哈哈~之前寫的太爛了重新寫了一下.....

2.代碼展示:

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
typedef struct linklist {
	int data;
	struct linklist* next;
}node;
//目錄
//1.動態申請節點
node* Creatnode(int x);
//2.單鏈表的尾插
void PushBack(node** plist, int x);
//3.單鏈表的打印
void Printlist(node** plist);
//4.單鏈表尾刪
void Popback(node** plist);
//5.單鏈表的頭插
void PushFront(node** plist, int x);
//6.單鏈表的頭刪
void PopFrount(node** plist);
//7.單鏈表的查找
node* Findpos(node* plist, int x);
//8.單鏈表在pos位置之后插入x
void Insertlinstafter(node* pos, int x);
//9.單鏈表刪除pos位置之后的元素
void PopPosAfter(node* pos);
//10.單鏈表的銷毀
void Destorylist(node** plist);
//1.動態申請節點
node*  Creatnode(int x) {
	node* t = (node*)malloc(sizeof(node));
	if (t == NULL) {
		assert(0);
		return NULL;
	}
	else {
		t->next = NULL;
		t->data = x;
		return t;
	}
}
//2.單鏈表的尾插
void PushBack(node** plist, int x) {
	assert(plist);
	if (*plist == NULL) {
		*plist = Creatnode(x);
	}
	else {
		node* p = *plist;
		while (p->next) {
			p = p->next;
		}
		p->next = Creatnode(x);
	}
}
//3.單鏈表的打印
void Printlist(node** plist) {
	assert(plist);
	node* p =* plist;
	while (p) {
		printf("%d ", p->data);
		p = p->next;
	}
}
//4.單鏈表尾刪
void Popback(node** plist) {
	assert(plist);
	if (*plist == NULL) {
		return NULL;
	}
	node* p = *plist;
	node* q = NULL;
	while (p->next) {
		q = p;
		p = p->next;
	}
	q->next =NULL;
	free(p);
}
//5.單鏈表的頭插
void PushFront(node** plist, int x) {
	assert(plist);
	node* t = Creatnode(x);
	if (NULL == *plist) {
		*plist = t;
	}
	else {
		t->next = *plist;
		*plist = t;
	}
}
//6.單鏈表的頭刪
void PopFrount(node** plist) {
	assert(plist);
	if (plist == NULL) {
		return NULL;
	}
	else {
		node* p = *plist;
		*plist = p->next;
		free(p);
	}
}
//7.單鏈表的查找
node* Findpos(node* plist, int x) {
	node* cur = plist;
	while (cur) {
		if (cur->data == x) {
			return cur;
		}
		cur = cur->next;
	}
	return NULL;
}
//8.單鏈表在pos位置之后插入x
void Insertlinstafter(node* pos, int x) {
	assert(pos);
	if (NULL == pos) {
		return ;
	}
	node* t = Creatnode(x);
	t->next = pos->next;
	pos->next = t;
}
//9.單鏈表刪除pos位置之后的元素
void PopPosAfter(node* pos) {
	assert(pos);
	if (pos->next == NULL) {
		return;
	}
	else{
		node* p = pos->next;
		pos->next = p->next;
		free(p);
	}
}
//10.單鏈表的銷毀
void Destorylist(node** plist) {
	assert(plist);
	node* p = *plist;
	while (p) {
		*plist = p->next;
		free(p);
		p = *plist;
	}
	*plist = NULL;
}
 
void test1() {
	node* plist=NULL;//創建頭指針
	PushBack(&plist, 1);//尾插元素
	PushBack(&plist, 2);
	PushBack(&plist, 3);
	PushBack(&plist, 4);
	PushBack(&plist, 5);
	Printlist(&plist);//打印鏈表元素  1 2 3 4 5 
	printf("\n");
	Popback(&plist); //尾刪元素      
	PushFront(&plist, 0);//首插元素0    
	Printlist(&plist);//打印鏈表   0 1 2 3 4
	printf("\n");
	PopFrount(&plist);//首刪元素0  
	Printlist(&plist);//打印鏈表   1 2 3 4
	printf("\n");
	Findpos(plist,1);//尋找鏈表中1的地址,不方便演示,下面會演示
	Insertlinstafter(Findpos(plist, 4), 5);//在4后面插入5,用到上面的Findpos函數
	Printlist(&plist);//打印鏈表   1 2 3 4 5
	printf("\n");
	PopPosAfter(Findpos(plist, 4));//刪除指定位置后面的元素(刪除4后面的5)
	Printlist(&plist);//打印鏈表    1 2 3 4
	printf("\n");
	Destorylist(&plist);//銷毀鏈表
	Printlist(&plist);//打印鏈表
}
void test() {
	test1();
}
int main() {
	test();
	return 0;
}

3.測試結果:

a.先創建了頭指針plist

b.尾插1 2 3 4 5

c. 尾刪元素5

d.首插元素0

e.首刪元素0

f.在元素4 后面插入5

g.刪除4元素后面的5

h.銷毀鏈表

C語言怎么實現單鏈表的基本功能

到此,相信大家對“C語言怎么實現單鏈表的基本功能”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

台安县| 柯坪县| 青河县| 茶陵县| 岑溪市| 兴文县| 清涧县| 定日县| 湘潭县| 县级市| 中牟县| 丽江市| 徐汇区| 盐津县| 南和县| 平度市| 平凉市| 邳州市| 乌鲁木齐县| 贵州省| 高邑县| 滁州市| 岳池县| 桑日县| 毕节市| 名山县| 南丹县| 贵港市| 嘉禾县| 云霄县| 台前县| 太和县| 景德镇市| 永春县| 鄂尔多斯市| 蒲城县| 隆安县| 将乐县| 曲水县| 伊春市| 台东市|