实现带头结点的单链表

数据结构——单链表实现带头结点的单链表实现带头结点的单链表 功能:对单链表进行 初始化 ,判空, 求表长,插入元素, 删除元素, 查找元素, 尾插法|头插法创建单链表 ,销毁表 心得:通过打印的数据可以清晰判断链表长度变化,判断是否完成基础功能 代码/* 实现带头结点的单链表 功能:对单链表进行 初始化 ,判空, 求表长,插入元素, 删除元素, 查找元素, ...
摘要由CSDN通过智能技术生成

数据结构——单链表

实现带头结点的单链表

实现带头结点的单链表 
功能:对单链表进行  初始化 ,判空, 求表长,插入元素, 删除元素, 查找元素, 
		   尾插法|头插法创建单链表 ,销毁表 
心得:通过打印的数据可以清晰判断链表长度变化,判断是否完成基础功能 

代码

/*
	实现带头结点的单链表 
	功能:对单链表进行  初始化 ,判空, 求表长,插入元素, 删除元素, 查找元素, 
		尾插法|头插法创建单链表 ,销毁表 
	心得:通过打印的数据可以清晰判断链表长度变化,判断是否完成基础功能 
*/
#include <stdio.h> 
#include <stdlib.h>

#define The_Value -999 

typedef struct LNode{
               //定义单链表节点类型 
	int data;					 //每个节点存放一个数据元素 
	struct LNode *next;          //指针指向下一个节点 
}LNode , *LinkList;

//初始化一个单链表(带头结点) 
bool InitList(LinkList &L)
{
   
	L = (LNode *)malloc(sizeof(LNode)) ;   //分配一个头结点 
	if(L == NULL)                          //内存不足,分配失败 
		return false;
	L->next = NULL;                        //头结点之后暂时还没有节点 
	return true; 
}

//判断单链表是否为空(带头结点) 
bool Empty(LinkList L)
{
   
	if(L->next == NULL)
		return true;
	else
		return false;
}

//按位查找,返回第i个元素
LNode * GetElem(LinkList L, int i)
{
   
	if(i < 0)
		return NULL;
	LNode *p;                //指针p指向当前扫描到的结点
	int j = 0;					  //当前p指向的是第几个结点 
	p = L ;                       //L指向头结点,头结点是第0个结点(不存数据) 
	while(p != NULL && j< i) {
     //循环找到第i个结点
		p = p->next;
		j++; 
	}
	return p; 
 } 

//按值查找,找到数据域等于e 的结点
LNode * LocateElem(LinkList L, int e)
{
   
	LNode *p = L->next;
	//从第1个结点开始查找数据域为e的结点
	while(p != NULL && p->data != e)
		p = p->next;
	return p;            //找到后返回该结点的指针,否则返回NULL 
}

//求表的长度
int Length(LinkList L) 
{
   
	int len = 0;     //统计表长
	LNode  *p = L;
	while(p->next != NULL ){
   
		p = p->next;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值