数据结构之单链表

本文详细介绍了单链表的定义、初始化、判断空链表、销毁链表、清空链表、求链表长度、按值查找、插入和删除元素、头插法和尾插法创建链表以及输出链表等基本操作。通过这些函数,可以实现单链表的各种常见操作。
摘要由CSDN通过智能技术生成

  从这个暑假开始,学完了基本算法的我,已经开启了数据结构之旅,第一个数据结构是“线性表”,分为链式存储结构和顺序存储结构,一个是顺序表(相当于数组),另一个是链表,分为单链表、双向链表、循环链表(用指针来进行和顺序表一样的操作),在这两个之中,顺序表较为简单,链表就是比较绕,很多人可能会忘记些什么。

  而我,在这个星期里面,一步一步听课,写代码,学会了关于单链表的许多操作,今天,我就来写一个关于单链表的总结!

  首先,我们需要学会怎么样来定义一个单链表!

  • 我们要知道一个链表的长度是多少。可以用length来表示。
  • 我们还要知道这个链表的数据域是什么。用data来表示。
  • 最后还需要知道这个链表的指针域指向的哪里。用nxet来表示 ,next代表着链表的指针域,所以是一个指针,需要加上*号。

  这样,我们就可以定义一个结构(struct)了,用Node来表示这个结构

定义一个链表代码:

struct Node
{
    int data;
    int length;
	struct Node* next;    	
};

  现在,只需要在气体地方写上Node *L,就代表创建了一个链表! 

  定义了一个链表后,需要先来初始化后才可以使用,在这里,可以使用new函数,意思是分配一个空间,那我们要将空间分配给谁呢?自然是给这个结构了,这个链表有了空间之后,我们需要将这个链表设置为空,那么只需要让这个链表的指针域指向NULL(表示为空)就行了!

链表初始化代码:

bool initList_L(Node *&L)//链表初始化 
{
	L=new Node;
	L->next=NULL;
	return true;
}

  指针一般都以->代表指向着什么东西!

  定义链表后,又初始化了链表,接下来就可以使用链表了,我们的第一个操作就是判断这个链表是不是空链表(指针域指向空),怎么判断呢,只需要判断一下这个链表的指针域是不是指向空的,是就返回true,不是就代表这个链表的指针域指向了别的东西,返回false。

判断当前链表是否为空代码:

#include<iostream>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
struct Node
{
    int data;
    int length;
	struct Node* next;    	
};
bool initList_L(Node *&L)//链表初始化 
{
	L=new Node;
	L->next=NULL;
	return true;
}
bool ListEmpty(Node *L)//判断链表是否为空 
{
	if(L->next)
	  return false;
	else
	  return true;
}
int main()
{
    Node *p;
    initList_L(p);
    if(ListEmpty(p)==1)
      cout<<"当前链表为空"<<end
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙星尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值