顺序存储--链表

本文介绍了如何使用C语言创建链表数据结构,详细阐述了typedef的用法,链表的定义,包括单链表和双链表的分类,并讨论了链表的操作。链表中的节点由数据域和指针域组成,其中指针域指向下一个节点。通过头指针,可以遍历整个链表。
摘要由CSDN通过智能技术生成

一、typedef的用法

#include<stdio.h>

typedef int aaa; 
typedef struct Student{
   		//声明一个结构体 
	int age;
	float score;
}ST;

int main(){
   
	struct Student st;		//声明一个结构体变量 
	ST st2;					//使用 typedef 后,同样声明一个结构体变量
    ST * pst = &st;			//声明一个结构体类型的指针 
	
	int i = 10;				//声明一个整型变量
	aaa j = 20;				//使用 typedef 后,同样声明提个整型变量 
	
	st.age = 20;
	st2.age = 30;
	printf("st.age = %d   st2.age = %d\n",st.age,st2.age); // 20 30
	printf("i = %d   j = %d",i,j);	// 10 20
	return 0; 
}

相当于给数据类型起一个别名。

也可以这么写:

#include<stdio.h>

typedef struct Student{
   
	int age;
	float score;
}*PST,ST;

int main(){
   
	ST st;			//声明一个结构体类型的变量
	PST pst = &st;	//声明一个结构体类型的指针变量
	
	st.age = 10;
	printf("pst->age = %d",pst->age);	//10
	
	return 0; 
}

二、链表

2.1、定义

n个节点离散分配,彼此通过指针相连,每个节点只有一个前驱节点,每个节点只有一个后续节点,首节点没有前驱节点,尾节点没有后续节点。

专业术语:

  • 首节点 : 第一个有效节点
  • 尾节点 : 最后一个有效节点
  • 头结点 : 第一个有效节点之前的节点,头节点并不存放有效数据,加头结点的目的是为了方便对链表的操作,头结点的数据类型和首节点是一样的。
  • 头指针 : 指向头节点的指针变量
  • 尾指针 : 指向尾节点的指针变量

确定一个链表需要几个参数?

答: 只需要一个参数:头指针

​ 因为通过头指针可以推算出链表的其他所有参数。

一个节点分为数据域和指针域两部分,其中指针域指向下一个节点的整体,下一个节点的数据类型和这个节点是一样的。

2.2、分类

  • 单链表

  • 双链表 : 每一个节点有两个指针域

  • 循环链表 : 最后一个节点的指针域指向头节点;能通过任何一个节点找到其他节点。

p->pNext  //p所指向结构体变量中的pNext成员本身,内容是一个结构体变量的地址

2.3、单链表

单链表的各种操作

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

typedef struct Node{
   
	int data;				//数据域 
	struct Node * pNext;	//指针域,指向下一个结点整体 
}NODE,* PNODE;

PNODE creat_list();							// 1.创建一个非循环单链表,并将该链表的头结点的地址赋给 pHead
void traverse_list(PNODE pHead);			// 2.遍历输出
bool empty_list(PNODE pHead);				// 3.判断链表是否为空
int length_list(PNODE pHead);				// 4.求链表长度
bool 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值