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

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

算法與數據結構【二】簡單鏈表的實現

2019-11-08 02:55:50
字體:
來源:轉載
供稿:網友

鏈表是線性表的一種,是一種基礎的數據結構,也是很多人學習的第一種數據結構,鏈表的種類不少,單向鏈表,雙向鏈表,循環鏈表等,雖然形式眾多,但大同小異,都是由一個個節點(NODE)鏈接起來的。在java中,有位于utils包下封裝好的LinkedList類可以使用,它的底層實現就是鏈表,而在c語言中就需要我們自己去實現鏈表,這對我們理解c語言里面的指針和內存分配都是有著不小的幫助。

鏈表除了首節點和尾節點其他的節點都有前驅和后繼,它和ArrayList的區別有一點就是ArrayList的內存之間是相鄰的,而鏈表則是離散分布的,由指針將它們連接在了一起,話不多說,直接上代碼

#include<stdio.h>#include<stdlib.h>#include<malloc.h>struct NODE{	int age;	char*name;	struct NODE*next;};int main(){	struct NODE*head;	struct NODE*tail;	struct NODE*p;	int i,val,length;	char*n;	head = (struct NODE*)malloc(sizeof(struct NODE));	if(head==NULL){		PRintf("分配內存出現錯誤/n");		exit(-1);	}else{		tail = head;		head->next = NULL;		printf("輸入鏈表的長度/n");		scanf("%d",&length);		for(i=0;i<length;i++){			p = (struct NODE*)malloc(sizeof(struct NODE));			if(p==NULL){				printf("分配內存出現錯誤/n");				exit(-1); 			}else{			printf("請輸入每一個人的年齡和姓名/n");			printf("第%d個人的年齡: ",i+1);			scanf("%d",&val);			printf("第%d個人的姓名: ",i+1);			scanf("%s",n);			p->age = val;			p->name = n;			tail->next = p;			p->next = NULL;			tail = p;			}		}	}	return 0;} 如果要刪除某一項,一定要記得free(p)以及放空指針,避免內存泄漏和野指針。

參考博客:學習心得:鏈表的操作(C語言實現)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 景德镇市| 通州市| 都匀市| 三门峡市| 无极县| 赤水市| 内乡县| 晋江市| 屯昌县| 林西县| 安陆市| 尚志市| 台南县| 安多县| 林芝县| 左贡县| 益阳市| 罗田县| 牙克石市| 东城区| 永清县| 绿春县| 鹤峰县| 手机| 南岸区| 建湖县| 嘉善县| 即墨市| 荆州市| 长顺县| 房产| 朝阳区| 靖边县| 台北市| 辽宁省| 犍为县| 东城区| 凤台县| 囊谦县| 和龙市| 抚宁县|