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

2023王道C语言督学营(单链表的存储原理及实现)

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

2023王道C语言督学营(单链表的存储原理及实现)

链表的链式存储


头文件

#define  _CRT_SECURE_NO_WARNINGS
#include
#include
头结点 链表的定义
typedef struct LNode
{	int data;
	struct LNode* next;
}*LinkList ,LNode;

头插法建立单链表
//头插法建立单链表
void CreateLink1(LinkList& L)
{
	//带头结点的单链表
	L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;
	LNode* m;
	int x;
	scanf("%d", &x);
	while (x != 999)
	{
		m = (LNode*)malloc(sizeof(LNode));
		m->data = x;
		//s->next 整体是访问结构体空间的一个成员
		m->next = L->next;
		L->next = m;
		scanf("%d", &x);
	}
}
尾插法建立单链表
//尾插法创建单链表
void CreateLink2(LinkList& L)
{
	L =(LinkList)malloc(sizeof(LNode));
	//L->next = NULL;
	LNode* s,*r=L;
	int x;
	scanf("%d", &x);
	while (x != 999)
	{
		s = (LNode*)malloc(sizeof(LNode));
		s->data = x;
		r->next = s;
		r= s;//r指向新的表尾节点
		scanf("%d", &x);
	}
	r->next = NULL;
}
插入节点操作

//插入节点操作
void insertLink(LinkList& L, int n,int e)
{
	LNode* s;
	LNode* p=searchNode1(L, 2);
	s = (LNode*)malloc(sizeof(LNode));
	s->data = e;
	//p->next访问的是结构体空间的一个成员
	s->next = p->next;
	p->next = s;
}

打印链表[print()]

void printLink1(LinkList L)
{	
	L = L->next;
	while (L)
	{
		printf("%d  ",L->data);
		L = L->next;
	}
}
按序号查找节点的值[searchNode1()]

//按序号查找节点的值
LNode* searchNode1(LinkList L, int i)
{
	int j = 1;
	LNode* p = L->next;
	if (i == 0)
	{
		return L;
	}
	if (i < 1)
	{
		return NULL;//若i无效,则返回NULL
	}
	if (p && j < i)
	{
		p = p->next;
		j++;
	}
	return p;//返回第i个节点的指针,若i大于表长,则返回NULL
}
按值查找节点的操作[searchNode2()]

//按值查找节点的操作
LNode* searchNode2(LinkList L, int e)
{
	LNode* p = L->next;
	int i = 1;
	while (p != NULL && p->data!=e)
	{
		p = p->next;
		i++;
	}
	printf("按值查找的序号为:%dn", i);
	return p;
}
删除节点

主函数
int main()
{
	//LinkList L1;
	//头插法创建单链表
	//CreateLink1(L1);
	//printLink1(L1);

	LinkList L2;
	//尾插法创建单链表
	CreateLink2(L2);
	printLink1(L2);

	LNode* m;
	//按序号查找节点的值
	m = searchNode1(L2, 2);
	printf("节点的值为:%d", m->data);

	//按值查找表节点
	LNode* n;
	n = searchNode2(L2, 54);

	//擦汗如节点操作
	//操作链表,插入位置,插入值。插入2之后
	insertLink(L2,2,32);
	printLink1(L2);
	return 0;
}

输出结果为:

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

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

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