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

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

鏈表

2019-11-08 03:24:34
字體:
來源:轉載
供稿:網友

在存儲一大波數的時候,我們通常使用數組,但有時候數組顯得不夠靈活。比如需要向一組已經排好序的數中插入一個數,插入后仍然是按從小到大的順序。如果用數組來實現這一操作,需要把這個數以后的所有數往后移,這樣的操作顯然很耽誤時間。這里,用鏈表會很省時間的解決這一問題。

在c語言中,可以使用指針和動態分配內存函數malloc來實現。

指針用來存儲一個內存空間的地址;

malloc函數的作用是從內存中申請分配指定字節大小的內存空間。

如,malloc(4);此代碼申請了4個字節的內存空間,等同于malloc(sizeof(int));。需要記住,在程序中使用malloc函數時需要用到stdlib.h頭文件。

相應代碼:

#include<iostream>#include<stdio.h>#include<stdlib.h>#include<cstdio>#include<cstdlib>using namespace std;//創建一個結構體用來表示鏈表的結點的類型struct node {	int data;	struct node *next;//指針用來存儲下一個結點的地址,因為下一個結點的類型是struct node,所以這個指針的類型也必須是struct node *類型的指針};int main() {	struct node *head, *p, *q=0, *t;	int n, a;	scanf("%d", &n);	head = NULL;//頭指針初始為空	for (int i = 1; i <= n; i++) {		scanf("%d", &a);		//動態申請一個空間,用來存放一個結點,并用臨時指針p指向這個結點		p = (struct node *)malloc(sizeof(struct node));		p->data = a;//將數據存儲到當前結點的data域中		p->next = NULL;//設置當前結點的后繼指針指向空		if (head == NULL)			head = p;//如果這是第一個創建的結點,則將頭指針指向這個結點		else			q->next = p;//如果不是第一個創建的結點,則將上一個結點的后繼指針指向當前結點		q = p;//指針q也指向當前結點	}	scanf("%d", &a);//讀入待插入的數	t = head;//從鏈表頭部開始遍歷	while (t != NULL) {//當沒有到達鏈表尾部時循環		if (t->next == NULL || t->next->data > a) {//如果當前結點是最后一個或者下一個結點的值大于待插入數時			p = (struct node *)malloc(sizeof(struct node));//動態申請一個空間,用來存放新增節點			p->data = a;			p->next = t->next;//新增節點的后繼指針指向當前結點的后繼指針所指向的結點			t->next = p;//當前結點的后繼針針指向新增結點			break;//插入完畢退出循環		}		t = t->next;//繼續下一個結點	}	//輸出鏈表中的所有數	t = head;	while (t != NULL) {		PRintf("%d ", t->data);		t = t->next;	}	system("pause");	return 0;}

代碼實現:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 玉树县| 延长县| 聂拉木县| 房产| 调兵山市| 醴陵市| 巴楚县| 宁国市| 应城市| 临沧市| 鸡泽县| 宁德市| 绍兴市| 红河县| 宁陕县| 黔江区| 定南县| 娱乐| 当雄县| 穆棱市| 银川市| 浮梁县| 太原市| 肇东市| 汤原县| 郑州市| 郯城县| 保靖县| 崇左市| 五大连池市| 若尔盖县| 汾阳市| 寻乌县| 安义县| 库车县| 琼海市| 白银市| 攀枝花市| 沽源县| 平遥县| 婺源县|