数据结构----单链表(无哨兵位的头结点)

数据结构----单链表(无哨兵位的头结点)_第1张图片数据结构----单链表(无哨兵位的头结点)_第2张图片

        链表,作为数据结构中非线性表的数据结构,其重点表现在:逻辑相邻,空间不相邻。

数据结构----单链表(无哨兵位的头结点)_第3张图片图一表现为:无哨兵位的单链表,图二表现为:有哨兵位的单链表。

有哨兵位的单链表实施起来难度较小,那么今天我们的重点放在无哨兵位的单链表。 

        数据结构----单链表(无哨兵位的头结点)_第4张图片

        同样的,首先我们先将链表元素类型重定义,方便应对多种情况:

typedef int SLDatatype;

        然后我们定义链表结点的结构体:包含data,和下一个结点的地址 

typedef struct SListNode
{
	SLDatatype data;
	struct SListNode* next;
}SLNode;

        对于链表,我们就不需要作初始化操作了,初始化也不过是把头结点初始化为NULL,那不如直接创建一个空指针。

        下面我们直接开干,将链表的各类操作实现一波。 

        在开始操作之前,由于涉及到插入新结点,所以我们先写一个结点创造函数(简单):

SLNode* CreatNode(SLDatatype x)
{
	SLNode* newnode = (SLNode*)malloc(sizeof(SLNode));
	if (newnode == NULL)
	{
		perror(&

你可能感兴趣的:(数据结构,数据结构,算法)