PAT关于链表的知识点

本文详细介绍了尾插法和头插法在创建链表中的应用,通过实例展示了如何使用typedef定义链表结构,并提供了两种方法的实现代码。重点在于理解两种插入方式的区别,以及在实际问题中的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

尾插法建立建表

typedef struct node {
  int value;
  struct node* next;
}node, * Linklist;
void creatlist(Linklist &l)
{
	Linklist tp;
	Linklist lst;
	l = NULL;
	l = (Linklist)malloc(sizeof(node));
	lst = l;
	int a;
	while (cin >> a && a > 0)
	{
		tp = (Linklist)malloc(sizeof(node));
		tp->value = a;
		lst->next = tp;
		lst = tp;
	}
	lst->next = NULL;
}

头插法建立链表

typedef struct node {
  int value;
  struct node* next;
}node, * List;
void creatlist(List& L)
{
  List p;
  int tp;
  L = (List)malloc(sizeof(node));
  L->next = NULL;
  while (cin >> tp && tp >= 0)
  {
    p = (node *)malloc(sizeof(node));
    p->value = tp;
    p->next = L->next;
    L->next = p;
    len++;
  }
}

 

相关题目

头插法

#include<iostream>
#include<cstdlib>
using namespace std;

typedef struct node {
	int value;
	struct node* next;
}*Linklist, node;
void creatlist(Linklist &l)
{
	Linklist tp;
	Linklist lst;
	l = NULL;
	l = (Linklist)malloc(sizeof(node));
	lst = l;
	int a;
	while (cin >> a && a > 0)
	{
		tp = (Linklist)malloc(sizeof(node));
		tp->value = a;
		lst->next = tp;
		lst = tp;
	}
	lst->next = NULL;
}
int main()
{
	Linklist L1, L2;
	creatlist(L1);
	creatlist(L2);
	node* a, * b;
	a = L1->next;
	b = L2->next;
	int cnt = 0;
	while (a != NULL && b != NULL)
	{
		if (a->value == b->value)
		{
			if(!cnt)
			cout << a->value;
			else
			{
				cout << " " << a->value;
			}
			a = a->next;
			b = b->next;
		}
		else
		{
			if (a->value < b->value)
			{
				if (!cnt)
					cout << a->value;
				else
				{
					cout << " " << a->value;
				}
				a = a->next;
			}
			else
			{
				if (!cnt)
					cout << b->value;
				else
				{
					cout << " " << b->value;
				}
				b = b->next;
			}
		}


		cnt++;
	}
	while (a != NULL)
	{
		if (!cnt)
			cout << a->value;
		else
		{
			cout << " " << a->value;
		}
		a = a->next;
	}
	while (b != NULL)
	{
		if (!cnt)
			cout << b->value;
		else
		{
			cout << " " << b->value;
		}
		b = b->next;
	}

	return 0;
}

尾插法


#include<cstdio>
#include<iostream>
#include<cstdlib>
#include<algorithm>
using namespace std;
typedef struct node {
  int value;
  struct node* next;
}node, * List;
int len;
void creatlist(List& L)
{
  List p;
  int tp;
  L = (List)malloc(sizeof(node));
  L->next = NULL;
  while (cin >> tp && tp >= 0)
  {
    p = (node *)malloc(sizeof(node));
    p->value = tp;
    p->next = L->next;
    L->next = p;
    len++;
  }
}
int main()
{
    //换成scanf或者用那个语句加速输入输出,否则这个代码会TLE
  int cnt = 0;
  int bk = 0;
  int k;
  cin >> k;
  List La;
  int flag = 0;
  creatlist(La);
  node* p;
  p = La;
  while (p)
  {
    if (flag ==  k)
    {
      bk = 1;
      break;
    }
    flag++;
    p = p->next;
  }
  if (!bk)
  {
    cout << "NULL";
  }
  else
    cout << p->value;
  return 0;
}

 

基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生和教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jpgxep

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

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

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

打赏作者

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

抵扣说明:

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

余额充值