国产探花免费观看_亚洲丰满少妇自慰呻吟_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;}

代碼實現:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江达县| 孟村| 城市| 宁蒗| 山阳县| 凤山县| 盘山县| 鹿邑县| 类乌齐县| 南投县| 敦煌市| 涿州市| 临邑县| 霍山县| 南涧| 兴隆县| 平遥县| 来宾市| 高台县| 诸暨市| 沙坪坝区| 淮安市| 万州区| 沿河| 肃北| 晋江市| 襄樊市| 永善县| 会宁县| 田东县| 龙口市| 淮阳县| 三河市| 洪雅县| 榆树市| 大邑县| 玉溪市| 剑川县| 罗城| 洛隆县| 益阳市|