数据结构学习-2

线性表的链式表示和实现
线性表的链式储存结构的特点是用一组任意的存储单元存储闲心表的数据元素(这组存储单元可以是连续的,也可以不连续)。
一.单链表
特点
1.用一组任意的存储单元存储线性表的数据元素。
2.利用指针实现了用不相邻的存储单元存放逻辑上相邻的元素。
3.每个数据元素a,出储存本身信息外,还需储存其直接后继的信息。
4.节点数据元素ai的存储映象。
数据域:数据本身信息。
指针域:只是直接后继的存储位置。
在c语言中描述链表:
typedef struct LNode{
ElemType data; //其数据类型为结构体类型
struct LNode *next; //
}LNode; *LinkList;(指向结构体)![
在这里插入图片描述在这里插入图片描述
假设L是LinkList型的变量,则L微单链表的头指针,它指向表中的第一个节点(这里的链表的头指针为空),
建立链表之前要进行一个宏定义:
typedef int ElemType; //规定其数据类型
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList; //LinkList指向结构体的数据类型
接下来用两种方法建立一个链表:
法一:尾插法(头节点为空)
作用就是先定义一个头节点使指针p与L同时指向头节点,再创立一个新指针q赋予其新空间并输入新数值,p指向q,再次用q指向下一位以此往复。
LNode creatL(LinkList &L)
{
LNode *p, *q;
p = L =(LinkList)malloc(sizeof(LNode));
L->next = NULL;

int i=0;
int len;
printf(“请输入链表长度:”);
scanf("%d", &len);
for(i=0; i<len; i++)
{
int num;
q = (LinkList)malloc(sizeof(LNode));
printf(“请输入要输入数的值:”);
scanf("%d", &num);
q->data=num;
p->next=q;
p=q;
}
q->next=NULL;
}
法二:尾插法(头节点为空)
LNode creatL(LinkList &L, int n)
{
L = (LinkList) malloc (sizeof(LNode));
L->next = NULL;
for(i = n; i > 0; --i)
{
p = (LinkList) malloc (sizeof(LNode));
scanf(&p->data);
p->next = L->next;
L->next = p;
}
}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值