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)非循环链表