栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

考研C++/C数据结构之单链表头插法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

考研C++/C数据结构之单链表头插法

最众所周知单链表是408考研常考的一个数据结构考点之一,那么今天给大加分享一下我的学习成果。

今天我学了单链表的创建和读取,采用头插和尾插法可以新建一个单链表,以及打印单链表。

#define _CRT_SECURE_NO_WARNINGS
#include 
#include 

typedef int ElemType;
typedef struct LNode {
	ElemType data;
	struct LNode* next;//结构体指针,指向下一个结点
}LNode,*linkList;

//头插法新建链表
linkList CreatList_head(linkList& L)
{
	linkList s;
	int x;
	L = (linkList)malloc(sizeof(LNode));
	L->next = NULL;
	scanf("%d", &x);
	while (x != 9999)
	{
		s = (linkList)malloc(sizeof(LNode));
		s->data = x;
		s->next = L->next;
		L->next = s;
		scanf("%d", &x);
	}
	return L;
}

//尾插法新建链表
linkList CreatList_trail(linkList& L)
{
	int x;
	L = (linkList)malloc(sizeof(LNode));//申请头节点的空间
	LNode* s, * r = L;//linkList s,r=L;也可以
	//r代表链表表尾节点,指向链表尾部
	scanf("%d", &x);
	while (x!=9999)
	{
		s = (LNode*)malloc(sizeof(LNode));//为新插入的节点申请一个新空间
		s->data = x;
		r->next = s;//让尾部节点指向新的节点
		r = s;//r移到新的表尾节点
		scanf("%d", &x);
	}
	r->next = NULL;//尾节点指针赋空
	return L;
} 

//打印链表函数
void PrintList(linkList L)
{
	L = L->next;
	while (L != NULL)
	{
		printf("%3d", L->data);//打印当前节点的数据
		L = L->next;//指向下一个节点
	}
	printf("n");
}

void PrintList2(linkList L)
{
	L = L->next;
	while (L != NULL)
	{
		printf("%3d", L->data);//打印当前节点的数据
		L = L->next;//指向下一个节点
		if (L != NULL)
		{
			printf(" ");
		}
	}
	printf("n");
}


int main()
{
	linkList L;//链表头,结构体指针类型
	CreatList_head(L);//头插
	PrintList2(L);
	CreatList_trail(L);//尾插
	PrintList2(L);//打印
	return 0;
}

请读者仔细研读,弄懂每句代码的意思,如果大佬们有更简捷的实现方法,多谢大佬们赐教。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/779890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号