结构体与指向结构体的指针
用指针处理链表
链表是一种常见的重要的数据结构,通常是动态 动态进 动态 行存储分配。一个链表一般有一个“头指针 头指针”,链 头指针 表 中的每个元素称为一个“结点 结点”,每个结点包含两 结点 个 部分:一个是用户需要的实际数据,另一个是下一 个结点的地址。 处理动态链表需要的函数有: void *malloc(unsigned int size); void free(void *p);
结构体与指向结构体的指针
结 构 体
• 定义 定义:用户自定义的一种数据结构,将不同类型 的数据组合成一个有机的整体以便于引用。在一个 组合项中包含若干个类型相同或不同的数据项。其 一般形式为: struct 结构体名 { 成员列表 }; typedef struct ev 如:
{ int Type; int occuTime; struct ev *next; } EVENT
;
• 结构体变量的引用 结构体变量名.成员名 结构体变量的引用:结构体变量名 成员名 结构体变量名 • 指向结构体变量的指针: 指向结构体变量的指针: 一个结构体变量的指针就是该变量所占据的内 存段的起始地址。 存段的起始地址。 如: EVENT ev; ; EVENT *p; ; *p=ev p=&ev p->成员名 成员名 • 结构体指针变量的引用: 结构体指针变量的引用: (*p).成员名 成员名
简单链表的基本操作
• 链表的建立与输出 • 链表的插入 • 链表的删除
typedef struct node { int data; struct node *nLeabharlann xt; }Link;① ② ③
① ②
链表的建立(初始化 链表的建立(初始化head=NULL) 首结点的建立: head=p; q=p 中间结点的处理: q->next=p; q=p; 尾结点的处理: q->next=NULL; 链表的插入 链表为空时: head=p;q=p; 链表不为空时: 插入为首结点 new->next=head;head=new 插入为中间结点 new->next=p;q->next=new 插入为尾结点 p->next=new;new->next=NULL