数据结构与算法(八)

typedef给数据类型另外取一个名字,之前的名字也可以正常使用

#include<stdio.h>

typedef double D;//D<==>double
typedef struct Student
{
	int age;
	char name[20];
	int num;
}* PST,ST;//PST<==>struct Student *,ST<==>struct Student

int main(void)
{
	D a = 3.14;
	ST st;
	PST pst = &st;
	pst->age = 25;
	printf("%d\n",st.age);

	return 0;
}

链表
定义:n个节点离散分布,彼此通过指针相连,每个节点只有一个前驱节点,只有一个后驱节点,首节点没有前驱节点,尾节点没有后驱节点。
专业术语
首节点:第一个有效节点
尾节点:最后一个有效节点
头结点:首节点前面的节点,头结点并不存放有效数据,主要是为了方便对链表的操作,其数据类型和其他节点一样
头指针:指向头结点的指针变量,存储了头结点的地址
尾指针:指向尾节点的指针变量,存储了尾节点的地址
确定一个链表需要几个参数
如果希望通过一个函数对链表进行操作,形参需要接受链表的几个参数?
只需要头指针就可以
如何创建一个链表的节点(节点的数据类型表示)
节点用一个结构体数据类型来创建,分为数据域和指针域,指针指向的数据类型和本身节点的数据类型一样

 #include<stdio.h>
    
typedef double D;//D<==>double
typedef struct Node
{
	int data;//数据域
	struct Node *p;//指针域,指向的数据类型与本身结构体的数据类型一样

}* P_N,N;//P_N<==>struct Node *,N<==>struct Node

链表的分类
(1)单链表
(2)双链表:有两个指针域
(3)循环链表:能通过任何一个节点找到所以节点
(3)非循环链表

猜你喜欢

转载自blog.csdn.net/qq_38530606/article/details/86293158