C 单向链表之动态链表:头插法

C 单向链表之动态链表:头插法

头插法:在头节点后插入,每插入一个元素,将其作为首节点(头结点后面的第一个节点)。(比尾插法高级!)

在这里插入图片描述

一、实现
头插法实现代码
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
	int data;             //数据域:存储数据
	struct node * next;   //指针域:指向下一个节点(指向谁,就保存了谁的地址)
}Node;
Node * createList();
int main()
{
	Node * head = createList();
	Node * pHead = head;
	pHead = pHead->next;
	while (pHead)
	{
		printf("%d\n",pHead->data);
		pHead = pHead->next;
	}
	return 0;
}
Node * createList()
{
	Node *head = (Node*)malloc(sizeof(Node));
	if(NULL == head)
		exit(-1);
	head->next = NULL;
	Node  *ptr;
	int inputData;
	scanf_s("%d", &inputData);
	while (inputData)
	{
		ptr = (Node*)malloc(sizeof(Node));
		if (NULL == ptr)
			exit(-1);
		ptr->data = inputData;
		ptr->next = head->next;
		head->next=ptr;
		scanf_s("%d", &inputData);
	}
	return head;
}
运行结果:

在这里插入图片描述

二、程序过程图分析

(1)创建空链表,输入数据不为零创建新节点并存储数据。
在这里插入图片描述
(2)头插法
1)插入第一个元素

ptr->next = head->next;

在这里插入图片描述

head->next=ptr;

在这里插入图片描述
2)插入第二个元素
首先生成新节点
在这里插入图片描述

ptr->next = head->next;

在这里插入图片描述

head->next=ptr;

在这里插入图片描述
3)插入第N个元素,直到输入的数为0为止。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值