数据结构与算法(C语言)------单向链表2

单链表

一、对于头指针和头结点的进一步理解:

1、链表中第一个结点的存储位置叫做头指针,整个链表的存取就必须从头指针开始进行。
2、有时链表的名字就是头指针,有时将链表封装成一个结构体里面包含头指针。
3、对于一个链表来说,头指针是必要的,而头结点是非必要的。
4、头结点的存在只是为了方便链表的统一操作而设置的,有了头结点后,对第一个元素之前插入结点和删除第一个结点的操作,与对其他结点的操作统一了。

在这里插入图片描述
图1:带有头结点的示意图

在这里插入图片描述
图2:不带头结点的示意图

二、代码(带有头结点)

#ifndef __LINKEDLIST_H
#define __LINKEDLIST_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define OK     1
#define ERROR  0
typedef int states;

typedef int ElementType;
/** 链表结点以及表头结构 */
typedef struct node{
   
	ElementType data;       //数据域
	struct node *next;      //指针域
}Node,* LinkedList;

/** 链表初始化 */
states  InitLinkedList(LinkedList *L);

/** 单链表的读取 */
states GetElem(LinkedList L,int pos,ElementType *x);

/** 单链表的插入操作 */
states InsertLinkedList(LinkedList L,int pos,ElementType x);

/** 单链表的删除操作 */
states DeleteLinkedList(LinkedList L,int pos,ElementType *x);

/** 创建单链表--头插法 */
void CreateLinkedList_H(LinkedList L);
	
/** 创建单链表---尾插法 */
void CreateLinkedList_T(LinkedList L);

/** 清空链表 */
states ClearLinkedList(LinkedList *L);

/** 获取链表结点个数 */
int GetLinkedListLength(LinkedList L);

/** 打印链表结点数据 */
void PrintfList(LinkedList L);

#endif /* __LINKEDLIST_H */

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值