C语言 有头结点的动态链表的创建

本文介绍了如何在C语言中高效地创建带有头结点的动态链表,避免不必要的内存浪费,并讲解了如何正确管理内存以防止内存泄漏。
摘要由CSDN通过智能技术生成

条件:当输入0停止继续建立链表

#include<stdio.h>
#include<stdlib.h>

typedef struct node {
	int data;						 //链表数据域
	struct node *next;		         //链表指针域
}Node;

void DeletNode(Node *pHead, int data);			//删除节点
void InsertListByHead(Node *pHead);             //头插法
void DestroyList(Node **pHead);					//销毁链表
Node * CreateList(); 							//创建空链表
void InsertListByTail(Node *pHead); 			//尾插法
void travelList(Node *pHead);					//遍历链表

int main() {
	Node *pHead;
	int data;
	
	pHead = CreateList();
//	InsertListByTail(pHead);
	InsertListByHead(pHead);
	travelList(pHead);

	printf("Please input the num you want to delete:");
	scanf("%d", &data);
	DeletNode(pHead, data);

	travelList(pHead);

	DestroyList(&pHead);
	travelList(pHead);				//验证链表是否销毁

	return 0;
}

void DeletNode(Node *pHead, int data) {
	Node *p ;

	while (pHead && pHead ->data != data) { //用头指针遍历
		p = pHead;  			  			//用p来保存要删除数据的前域
		pHead = pHead->next;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值