建立动态链表

写一个函数建立一个有3名学生数据的单向动态链表

#define _CRT_SECURE_NO_WARNINGS

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

using namespace std;


// 定义结点的结构体
struct ListNode {
	int id;  // 节点上存储的元素
	int score;
	ListNode *next;  // 指向下一个结点的指针
	//ListNode(int x) : val(x), next(NULL) {}  // 节点的构造函数
};

//结点的位置
int n;
//定义一个创建结构体的函数
struct ListNode* create()
{
	ListNode *head;
	ListNode *p1, *p2;
	p1 = p2 = (struct ListNode *)malloc(sizeof(struct ListNode));//开辟一个结点,让p1和p2同时指向它
	n = 0;
	scanf("%ld,%ld", &p1->id, &p1->score);//给第一个结点赋值
	head = NULL;
	while (p1->id != 0)
	{
		n = n + 1;
		if (n == 1)//如果是第一个结点就让head指向它,此时p1,p2,head三者同时指向它
			head = p1;
		else//这个语句是第二个循环开始执行,此时的p1已经指向第二个结点了
			p2->next = p1;//让p2指向第二个节点也就是p1
		p2 = p1;//将p1赋给p2,此时p1,p2同时指向了第二个结点了
		p1 = (struct ListNode *)malloc(sizeof(struct ListNode));//再开辟第二个结点,让p1指向它,此时只有p2,head指向第一个结点了
		scanf("%ld,%ld", &p1->id, &p1->score);//给第二个结点赋值,进入第二个循环
	}
	p2->next = NULL;//上个语句中,当我们赋值p1->id =0,循环结束,跳出创建链表,因此p2的下个结点需要置NULL
	return head;//
}
int main()
{
	ListNode* ptr;
	ptr = create();
	while (ptr != NULL)
	{
		printf("%ld,%ld\n", ptr->id, ptr->score);
		ptr = ptr->next;
	}
	
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徽州SLAM李

如果觉得不错,打赏一下哦,嘻

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

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

打赏作者

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

抵扣说明:

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

余额充值