C语言实现前部插入创建链表以及尾部插入链表

该博客介绍了如何使用C语言通过输入数据创建链表,包括前插法(头部插入)和后插法(尾部插入)。程序中提供了两种插入方法的实现,并在main函数中读取用户输入,创建链表并打印节点数据。注意,这里的N值为10,用于存储最大10个输入数据。
摘要由CSDN通过智能技术生成

C语言实现由输入的数据来创建链表。

插入部分分为头部插入和尾部插入。

取消掉对应的注释就行。

注意:#define N 10的N一般根据题目要求取最大值+1.保证能够输入所有数。

点击这里,了解更多算法与通信专业知识


#include<stdio.h>
using namespace std;

#define N 10
typedef struct Node
{
	int data;
	struct Node *next;
} myNode;

myNode *createNode(int *a, int n) {
	myNode *head, *rear, *p;
	int i;
	/********前插法**********/
	head = rear = NULL;//创建头结点和尾结点 最开始都指向同一点
	for (i = 0; i < n; i++) {//前插法(在链表头插入)
		p = (myNode *)malloc(sizeof(myNode*));
		p->data = a[i];
		p->next = rear;
		rear = p;
	}
	return head = rear;//在头部插入 返回时需要更新头结点

	/********后插法**********/
	//因为这里使用了rear->next 所以在用之前分配内存
	//rear = (myNode*)malloc(sizeof(myNode));
	//rear->next = NULL;
	//head = rear;			//记录头结点
	//for(i = 0; i < n; i++){//后插法(在链表尾部插入)
	//	p = (myNode *)malloc(sizeof(myNode *));
	//	p->data = a[i];
	//	p->next = NULL;//因为p是尾结点 所以需要让p指向null
	//	rear->next = p;//因为这里使用了rear->next 所以在用之前分配内存
	//	rear = p;
	//}
	//return head->next;//尾部插入 数据是从next开始的

}

int main()
{	
	int a[N];
	int i,j, m;
	for (i = 0; i < N; i++) {
		//scanf_s("%d", &m);//在VS里scanf用scanf_s
		//char c = getchar();
		//a[i] = m;
		//if (c == '\n') break;//需要先得到c 然后将m放进去了再break 否则会丢掉最后一个数
			
		scanf_s("%d", &a[i]);		//在VS里scanf用scanf_s
		if (getchar() == '\n') break;//也可以这样写 直接将数放到数组里
	}
	int n;
	scanf_s("%d", &n);
	int k;
	myNode *ans;
	ans = createNode(a, n);
	while (ans) {
		printf("%d\n", ans->data);
		ans = ans->next;
	}

	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子木呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值