单链表的创建方法

链表的头插法和尾插法的创建

链表是什么?

1.在数据结构中链表是基础的物理结构
2.在单链表中容易混搅的概念:首元结点,头指针,头结点

以这个单链表为例

首元结点是链表中存储第一个元素的结点也就是1号结点

头结点是首元结点前面的一个结点,可以不存储数据,也可以存储与数据元素相同的数据类型。

头指针是指向链表中第一个结点的指针,在这个表中指向的是头结点,
如果头结点不存在,那么头指针指向的就是首元结点。

链表的创建和一系列操作方法

1.头插法
在这里插入图片描述

 typedef struct _Node
{
	int data;
	struct _Node *next;
}Node,*PNode;
/**传入一个指针,并以该指针为头节点创建链表*/
void NodeHead(PNode  &H)
{
	char sign='N';
	H=new Node;//先申请内存地址
	H->next=NULL;//先将头节点的next为空
	do
	{
	PNode temp=new Node;	
	printf("请输入第%d个节点的值",++i);
	scanf("%d",&temp->data);
	temp->next=H->next;
	H->next=temp;
	getchar();
	printf("是否继续N/Y");
	scanf("%c",&sign);
	}while(sign=='Y');
			
}

2.尾插法在这里插入图片描述



 typedef struct _Node
{
	int data;
	struct _Node *next;
}Node,*PNode;
/**传入一个指针,并以该指针为头节点创建链表*/
void NodeHead(PNode  &H)
{
	char sign='N';
	H=new Node;//先申请内存地址
	End=H;//头和尾巴重合
	End->next=NULL;//先将尾节点的next为空
	do
	{
	PNode temp=new Node;	
	printf("请输入第%d个节点的值",++i);
	scanf("%d",&temp->data);
	End->next=temp;
	End=temp;//交换位置
	getchar();
	printf("是否继续N/Y");
	scanf("%c",&sign);
	}while(sign=='Y');
	End->next=NULL;
			
}

总结

头插法的核心代码

temp->next=H->next;//每一个新创建的结点的next为NULL
H->next=temp;	//让头结点的next指向新结点
头插法最后不用考虑让最后一个结点的next为NULL
因为有temp->next=H->next;



尾插法的核心代码	
End->next=temp;//往后接结点
End=temp;//交换位置,为了使让End一直在最后。

上面创建方法的形参使用的 PNode &H
使用引用是因为需要修改内容

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值