数据结构——带头结点链表和不带头结点链表操作比较

本文探讨了带头结点和不带头结点链表在插入、删除操作上的区别,并强调了带头结点链表在初始化时建立头结点的重要性。不带头结点的链表处理第一个元素时需特别注意,而带头结点的链表在初始化、删除和遍历上表现出不同特性。
摘要由CSDN通过智能技术生成

带头结点的链表和不带头结点的链表主要不同点在插入和删除操作上。同时要注意,带头结点的链表初始化操作时建立头结点。

下面我们来看一下代码中的异同:

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


typedef int elemType;
typedef struct Node{//定义链接节点
	elemType element;
	Node* next;
}Node;
int insertLast(Node** pNode, elemType ele);
//1、初始化链表,未带头结点
void init(Node** pNode){
	*pNode = NULL;
	printf("------>链表初始化<------\n");
}


void init_n(Node** pNode){
	*pNode = (Node*)malloc(sizeof(Node));//产生头结点,并使pNode头指针指向头结点
	if (!(*pNode)){
		printf("头结点初始化空间失败\n");
	}
	printf("------>链表初始化<------\n");
	(*pNode)->next = NULL;
}
//1、创建链表
Node* create(Node* pHead){
	Node* p1;//代表新节点
	Node * p2;//代表尾节点
	p1 = p2 = (Node*)malloc(sizeof(Node));//申请节点
	if (p1 == NULL || p2 == NULL){
		printf("内存空间申请失败\n");
		exit(0);
	}
	memset(p1, 0, sizeof(Node));
	printf("输入节点值(非正数结束):");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值