线性表的单链表存储学习

本文探讨线性表的单链表存储结构,详细解析每个结点包含的数据域和指针域,以及头指针的概念。内容涵盖有头结点的单链表,头结点的数据域可为空,尾节点指针指向NULL。通过实例阐述单链表的组织方式。
摘要由CSDN通过智能技术生成

线性表:单链表存储

        单链表由结点构成,每个结点包括一个数据域和一个指示其直接后继位置的指针域。链表中第一个结点的存储位置叫做头指针。在单链表中可以有头结点,也可以没有,但是一定有头指针。一般,有头结点的方式处理会比较简单明了。以下程序是针对有头结点的情况。头结点的数据域可以不存储任何信息,头结点的指针域存储指向第一个结点的指针。最后一个结点的指针域指向空NULL。


/*线性表链式存储的相应代码:
1.线性表的顺序单链表存储结构代码
2.初始顺序单链表
3.读取顺序单链表元素操作
4.插入操作
5.删除操作
6.判断线性表是否为空
7.顺序单链表整表创建:头插法
8.顺序单链表整表创建:尾插法
9.顺序单链表整表删除
10.遍历顺序单链表
11.顺序单链表长度
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define MAXSIZE 20 /* 存储空间初始分配量 */

typedef int Status;/* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef int ElemType;/* ElemType类型根据实际情况而定,这里假设为int */


/* 1.线性表的顺序单链表存储结构代码 */
typedef struct Node
{
	ElemType  data;
	struct Node *next;
}Node;
typedef struct Node *LinkList;  /* 定义LinkList */

/* 2.初始顺序单链表 */
Status InitList(LinkList *L) 
{
	 *L = (LinkList)malloc(sizeof(Node)); /* 产生头结点,并使L指向此头结点 */
	 if(!(*L))   /* 存储分配失败 */
		 return ERROR;
	 (*L)->next = NULL;  /* 指针域为空 */
	 return OK;
}

/* 3.读取顺序单链表元素操作 */
/* 声明一个指针p指向链表的第一个结点,初始化j从1开始;
   当 j<i 时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1;
   若到链表末端p为空,则说明第i个节点不存在;
   否则查找成功,返回结点p的数据
*/
Status GetElem(LinkList L,int i,ElemType *e)
{
	int j;
	LinkList p;
	p = L->next; /* L是头指针,指针p指向链
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值