数据结构——链表学习

数据结构——链表学习

开篇博客简单的记录一下自己的学习心得,供大家一起参考,也方便自己在以后进行回顾复习

初始化链表
1.有头节点
定义一个结构体指针(也就是该链表的名字),指向分配的头节点的地址,如果想要改变该结构体的指向,则需要用二级指针,传递参数可以为**P或者 *&L这样

2.链表插入
分为尾插入和随即插入,随即插入要注意顺序

链表查找,要注意P->NEXT已经是下一个节点了,所以判断的时候要找到最后一个节点,则要判断他的下一个节点地址是否为空(NULL)

#include "stdio.h"
#include<stdlib.h>

typedef enum status
{
	error,
	ok
}Status;

typedef struct list_single
{
	int data;
	struct list_single* next;
}Lnode ,*listpoint;

/** 包括头节点的初始化 */
Status InitList(Lnode **L)
{
	*L = malloc(sizeof(Lnode));
	(*L)->data = 1;
	(*L)->next = NULL;
	return ok;
}

/**
*  有头节点链表尾插入
*  Lnode* L  需要插入的链表的头指针
*  插入的数据的数值
*/
Status Create_list_back(Lnode* L, int inseert_value)
{
	int i = 0;
	Lnode* P=L,*S;
	/** 判断是否为头节点 如果指针指向*/
	if (P->next == NULL)
	{
		S = malloc(sizeof(Lnode));
		S->next = NULL;
		S->data = inseert_value;
		P->next = S;
		return ok;
	}
	/** 尾插入 */
	while (1)
	{
		P = P->next;
		if (P->next == NULL)
		{
			S = malloc(sizeof(Lnode));
			S->next = NULL;
			S->data = inseert_value;
			P->next = S;
			break;
		}
	}
	return ok;
}



/** 
*  有头节点的随机插入
*  Lnode* L  需要插入的链表的头指针
*  在第几个元素插入
*  插入的数据的数值
*/ 
Status Insert_list(Lnode* L, int num, int inseert_value)
{
	int i = 0;
	Lnode* P = L,*S;
	/* 找到n-1个元素 */
	while (P && i < num - 1)
	{
		i++;
		P = P->next;
	}
	S = (Lnode*)malloc(sizeof(Lnode));
	S->next = P->next;
	P->next = S;
	S->data = inseert_value;

	return ok;
}

void main()
{
	Lnode* L = NULL;
	Lnode *s = NULL;
	printf("L存的地址:%p\n\r",L);

	InitList(&L);
	printf("L存的地址:%p\n\r",L);
	printf("数据:%d\n\r", L->data);
	Create_list_back( L, 2);
	Create_list_back(L, 4);
	Create_list_back(L, 5);
	Create_list_back(L, 6);
	Create_list_back(L, 7);
	Insert_list(L, 2, 3);
	printf("数据:%d\n\r", L->next->next->data);
	printf("数据:%d\n\r", L->next->next->data);

}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值