Java教程

数据结构 - >单链表

本文主要是介绍数据结构 - >单链表,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录

 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。

单链表也是线性表的一种。

先上定义

链表的初始化

输出所有链表节点

出栈

查找


 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。

单链表也是线性表的一种。

画个图大家大家理解一下:

 自己画的,有点丑。

那么咱可以知道一个节点包括两个域:其中储存数据元素信息的域称为“数据域”,也就是图中的date;存储直接后继存储位置的域称为“指针域”,也就是图中的next。

先上定义

#define Size 1//用于控制分配节点大小
typedef int Em;
typedef struct Linklist
{
	Em date = NULL;
	struct Linklist* next;//定义一个指向Linklist类的指针
}Linklist;
typedef Linklist *linklist;

链表的初始化

linklist initlink()//带表头指针
{
	linklist head = (linklist)malloc(Size * sizeof(Linklist));
	head->next = NULL;
	return head;
}
linklist Lk_push(linklist& head, Em x)//表头插入
{
	linklist p = (linklist)malloc(Size * sizeof(Linklist));//给节点分配内存
	if (p != NULL)//如果节点不为空
	{
		p->next = head->next;
		head->next = p;
		p->date = x;
		return head;
	}
	cout << "ERROR:内存分配失败" << endl;
	exit(0);
}

输出所有链表节点

void Lk_outall(linklist& head)//输出所有节点
{
	linklist p = head->next;
	while (p!= NULL)
	{
		cout << p->date << "   ";
		p = p->next;
	}
	cout << endl;
}

出栈

linklist Lk_dele(linklist& head, Em x)//删除该节点
{
	linklist p = head;
	linklist q = head->next;
	while (q != NULL)
	{
		if (q->date == x)
		{
			p->next = q->next;
			free(q);//释放q点的内存
			return head;
		}
		p = p->next;
		q = q->next;
		return head;
	}
}

查找

linklist Lk_found(linklist& head, Em x)
{
	linklist p = head->next;
	while (p != NULL)
	{
		if (p->date == x)
		{
			cout << "存在" << endl;
		}
		return head;
	}
	cout << "不存在" << endl;
	system("pause");
	return head;
}

本人小白一个,内容有瑕疵,欢迎大神投稿

这篇关于数据结构 - >单链表的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!