首页 > 编程语言 > 详细

C语言构建一个链表以及操作链表

时间:2021-05-21 22:31:41      阅读:21      评论:0      收藏:0      [点我收藏+]
#include?<stdio.h>
#include?<malloc.h>
#include?<stdlib.h>
?
struct?Node{
	int?data;
	struct?Node?*?pNext;
};
?
struct?Node?*?createList(void){
	int?len;???????//存放有效节点的个数
	int??i;
	int??val;??????//用来临时存放用户输入的节点的值
?
	struct?Node?*?pHead?=?(struct?Node?*)malloc(sizeof(struct?Node));
	if?(NULL?==?pHead)?{
		printf("分配失败程序终止!\n");	
		exit(-1);
	}
	struct?Node?*?pTail?=?pHead;
	pTail->pNext=NULL;
?
	printf("请输入要生成链表的节点个数:?len=");
	scanf_s("%d",?&len);
?
	for?(int?i?=?0;?i?<?len;?++i){
?
		printf("请输入第%d个节点的值:",?i?+?i);
		scanf_s("%d",&val);
?
		struct?Node?*?pNew?=?(struct?Node?*)malloc(sizeof(struct?Node));
		if?(NULL?==?pNew)?{
			printf("分配失败程序终止!\n");
			exit(-1);
		}
?
		pNew->data?=?val;
		pTail->pNext?=?pNew;
		pNew->pNext?=?NULL;
		pTail?=?pNew;
	}
	return?pHead;
};
?
bool?empty_list(struct?Node?*?pHead)?{
	if?(pHead->pNext?==?NULL)?{
		return?true;
	}else{
		return?false;
	}
?
}
?
void?TraverseList(struct?Node?*?pHead?)?{
?
	if?(empty_list(pHead))?{???//判断链表是否为空
		printf("链表为空");
	}else?{
???????//链表操作
	}
?
	//优化链表操作
	struct?Node?*?p?=?pHead->pNext;
	while?(NULL!=p){
		printf("%d\n",?p->data);
?
		p?=?p->pNext;
	}
?
	return;
}
?
int?main(void)?{
?
	struct?Node?*?pHead=NULL;?//头指针(存放链表头结点地址)
	pHead?=?createList();??//构建一个链表
	TraverseList(pHead);???//操作链表
}


C语言构建一个链表以及操作链表

原文:https://blog.51cto.com/u_15174292/2801291

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!