9.4 用指针处理链表

简介: 9.4 用指针处理链表

9.4.1 什么是链表

它是动态地进行存储分配的一种结构。

链表中各元素在内存中的地址是不连续的。要找某一元素,必须先找到上一个元素,根据它提供的下一元素地址才能找到下一个元素。

如果不提供“头指针”,则整个链表无法访问。

9.4.2 建立简单的静态链表

head=&a;       //将结点a的起始地址赋给头指针head
a.next=&b;     //将结点b的起始地址赋给a结点的next成员
b.next=&c;     //将结点c的起始地址赋给a结点的next成员
c.next=NULL;   //c结点的next成员不存放其他结点地址
p=head;         //使p指向a结点

9.4.3 建立动态链表

所谓建立动态链表是指在程序执行过程中从无到有建立起一个链表,即一个一个地开辟结点和输入各结点数据,并建立起前后相链的关系。

9.5 共用体类型

9.5.1 什么是共用体类型

有时想用同一段内存单元存放不同类型的变量。

定义共用体类型变量的一般形式为:

union 共用体名

{成员表列}变量表列;

例如:

union       //没有定义共用体类型名
{
    int i;
    char ch;
    float f;
}a,b,c;

9.5.2 引用共用体变量的方式

只有先定义了共用体变量才能引用它,但是不能引用共用体变量,而只能引用共用体变量中的成员。

不能只引用共用体变量,例如下面这样是错误的:

printf("%d",a);

应该写成:

printf("%d",a.i);

9.5.3 共用体类型数据的特点

在使用共用体类型数据时要注意以下一些特点:


(1)同一内存段可以用来存放几种不同类型的成员,但在每一瞬间只能存放其中一个成员,而不是同时存放几个。

(2)可以对共用体变量初始化,但初始化表中只能有一个常量。

(3)共用体变量中起作用的成员是最后一次被赋值的成员,原有变量存储单元中的值就被取代。

(4)共用体变量的地址和它的各成员的地址都是同一地址。

(5)不能对共用体变量名赋值,也不能企图引用变量名来得到一个值。

(6)C99允许用共用体变量作为函数参数。

(7)共用体类型可以出现在结构体类型定义中,也可以定义共用体数组。


相关文章
|
3月前
链表指针的传参,传值和传地址
本文讨论了链表操作中指针传参的问题,特别是指针的传值与传地址的区别,并提供了修正代码,以确保链表插入操作能正确地修改指针指向的地址。
22 1
链表指针的传参,传值和传地址
|
8月前
|
存储 C语言
用指针处理链表
用指针处理链表
74 3
|
3月前
|
存储
一篇文章了解区分指针数组,数组指针,函数指针,链表。
一篇文章了解区分指针数组,数组指针,函数指针,链表。
27 0
|
3月前
|
C语言
无头链表二级指针方式实现(C语言描述)
本文介绍了如何在C语言中使用二级指针实现无头链表,并提供了创建节点、插入、删除、查找、销毁链表等操作的函数实现,以及一个示例程序来演示这些操作。
43 0
|
6月前
【数据结构OJ题】复制带随机指针的链表
力扣题目——复制带随机指针的链表
59 1
【数据结构OJ题】复制带随机指针的链表
|
5月前
|
Python
【Leetcode刷题Python】138. 复制带随机指针的链表
LeetCode上题目“138. 复制带随机指针的链表”的Python解决方案,包括两种方法:一种是在每个节点后复制一个新节点然后再分离出来形成新链表;另一种是构建一个字典来跟踪原始节点与其副本之间的映射关系,从而处理新链表的构建。
28 1
|
5月前
|
存储 算法 数据处理
指针与链表
指针与链表
88 0
|
7月前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
|
8月前
|
存储 C语言
链表—初始化指针变和创建新的节点------区别应用分析
链表—初始化指针变和创建新的节点------区别应用分析
|
8月前
|
存储 缓存 搜索推荐
指针链表
指针链表
54 0