您的位置: turnitin查重官网> 工程 >> 电气工程 >> 电气化铁道 >数据结构用C语言结构体类型指针实现数据结构链表操作工作

数据结构用C语言结构体类型指针实现数据结构链表操作工作

收藏本文 2024-02-25 点赞:6465 浏览:16400 作者:网友投稿原创标记本站原创

摘要:本文介绍了结构体类型的基本原理及定义方法,利用结构体类型变量作为链表中的数据项比较符合实际应用中的需要。因此,文章分别介绍了定义结构体指针的方法和建立结构体类型结点的单向链表的具体描述。
关键词:结构体 链表 指针
1007-9416(2013)04-0165-02

1 结构体类型

1.1 概述

在学习了C语言基本类型数据之后,在处理一些实际问题的时候,往往需要将多种基本类型数据组合成一个有机整体,以便一起引用,整体中的数据相互联系,形成一组有特殊含义的数据,这样的一个组合项被称为结构体。例如:一个学生信息就可以看成一个结构体,学生信息包括学号、姓名、性别、年龄、成绩、籍贯等内容,每一项内容又是一个基本类型变量,可以分别定义为学号(整型),姓名(字符串)、性别(字符型)、年龄(整型)、成绩(单精度实型)、籍贯(字符串)。将这些有特殊含义的变量放在一个结构体中,相当于高级语言中的“记录”。数据结构链表中的每一个数据项不一定都是单一数据,大多数情况下都是一个组合项做为一个数据项,这时就需要用到结构体做数据项。

1.2 结构体类型变量定义

在定义了结构体类型变量之后,不可以对其整体进行引用,而只能对结构体变量中的各个成员分别进行引用。引用的方式为:结构体变量名.成员名,其中“.”是成员运算符,它在所有的运算符中优先级最高。
例如:student1.num表示student1变量中的num成员,即st

摘自:学术论文网www.udooo.com

udent1的num(学号)项,可以对成员项进行运算和输入输出等引用。

2 结构体类型数据的指针

2.1 定义指向结构体变量的指针

2.2 指向结构体变量的指针的引用

在以上操作中,将指针p指向结构体类型变量student1的首地址,那么引用结构体变量中的数据可以有三种形式:(1)结构体变量.成员名(2)(*p).成员名(3)p->成员名。
由此可得,结构体变量成员的输出可以写成:printf(“No.:%d\n”,student1.num)或者printf(“No.:%d\n”,(*p).num)或者printf(“No.:%d\n”,p->num)这三种方式。

3 用结构体变量处理链表

链表在计算机科学中的使用非常广泛,数据结构中的堆栈、队列、串、树等结构及其算法以及操作系统进程的排列等均可由链表来实现。链表是动态分配存储的一种结构,相较于数组,链表可以根据需要动态的分配存储单元,避免了存储空间不足或者浪费存储空间的缺点。

4 建立结构体类型结点的单向链表

设3个指针变量:head、p1、p2,它们都是用来指向struct student类型数据的。先用malloc函数开辟第一个结点,并使p1、p2指向它。然后从键盘读入一个学生的数据给p1所指向的第一个结点。我们约定学号不会为零,如果输入的学号为0,则表示建立链表的过程完成。先使head的值为NULL(即等于0),这是链表为“空”时的情况,当建立第一个结点就使head指向该结点。如果输入的p1->num不等于0,则输入的是第一个结点数据,令head=p1,即把p1的值赋给head,p1所指向的新开辟的结点就成为链表中第一个结点。然后再开辟另一个结点并使p1指向它,接着输入该结点的数据。如果输入的p1->num≠0,则应链入第二个结点(n=2),由于n≠1,则将p1的值赋给p2->next,此时p2指向第一个结点,接着执行p2->next=p1,使得第一个结点的next成员指向第二个结点。接着使p2=p1,也就是使p2指向刚才建立的结点,往复循环下去,使p2指向最后一个结点为止。
利用链表这种存储结构与数组相比有以下几点优点:(1)可以进行离散的空间分配,不必占用大量连续的存储空间数组中所有的元素占用的是一片连续的存储空间。(2)可以进行动态空间分配,不必预估存储空间的大小,数组在使用之前必须事先声明其元素个数。(3)链表适用于更加复杂的数据结构,可以更好的实现堆栈、队列、串等数据结构的描述。(4)可以避免大量的数据移动:当数据需要频繁的进行插入、删除操作时,数组需要进行大量的数据移动操作以空出/填补插入/删除操作所需的空间。

    copyright 2003-2024 Copyright©2020 Powered by 网络信息技术有限公司 备案号: 粤2017400971号