day16

 结构体 、共用体、枚举 

数据类型:
基本数据类型
  整型 
  浮点型
  字符型 
构造类型
  数组类型 
指针类型
void类型

注意:
1.结构体 --- 用来实现 自定义数据类型 
2.用结构体 
  a.先构造出 数据类型 
  b.用数据类型 定义变量 
               数组
               指针 
               

访问结构体:
  . //结构体成员运算符 
  
 结构体变量名.成员变量名  
 
共用体类型可以是函数参数,也可以是函数返回值类型 
  
    共用体,结构体类型定义出来之后,
    a.定义变量
    b.定义数组
    c.定义指针 
    d.做函数参数,返回值类型 
    枚举:
  一枚一枚列举 
  逐个列举 
  
  如果一个变量只有几种可能的值,则可以定义为枚举类型。
  所谓“枚举”是指将变量的值一一列举出来,
  变量的值只限于列举出来的值的范围内。
一   结构体类型的定义
(1)结构体类型定义的一般形式

使用结构体类型时,首先要“构造”它,如同在调用函数之前要先定义函数一样。结构体类型的定义方式是:

struct  结构体类型名称{
      数据类型  成员名1;
      数据类型  成员名2;
      ......
      数据类型  成员n;
};
说明:

(1)struct是关键字,结构体类型名称的命名规则满足标识符命名规则。

(2)结构体类型中的“成员”由大括号“{ }”括起来,用来说明该结构体有哪些成员以及各成员的数据类型。

(3)结构体类型定义末尾括号后的分号“ ; ”并不可少。

(2)类型定义

链表

3、处理链表所需要的函数
C语言提供了一些内存管理函数,这些内存管理可以按需动态地分配内存空间,也可以把不在使用的空间回收,为有效地利用内存资源提供了手段。

常用的内存管理函数有malloc(),calloc(),free(),realloc()这4个函数。

malloc(),calloc(),free(),realloc()这4个函数的声明在stdlib.h头文件中,在用到这些函数时需要用“#include <stdlib.h>”命令将头文件包含到程序文件中。

1.  malloc()函数

malloc()函数的原形为:        void  *malloc(unsigned  size);

其调用形式为:        (类型说明符*)malloc(size);

功能:在内存的动态存储区中分配一块长度为size字节的连续区域。函数的返回值为该区域的首地址,这个地址是void类型,因此,在调用时要用“类型说明符”进行强制类型转换。如果分配失败,则返回一个NULL指针。例如:

头插法:

   假如我们要在头节点phead后面插入节点p:

(1)把头节点的指针域指向P节点,即pHead->pNext=p;

(2)把p节点的指针域指向NULL,即p->pNext=NULL;

这样就可以了吗? 想想我们就可以发现,当我们要插入多个节点时,头节点始终指向最后添加的一个数据,以前的节点通过头指针此时已经找不到了;我们定义一个尾指针pTail,始终用来指向链表的结尾,每次只在pTail后面添加节点。

伪算法:

(1)定义一个尾指针pTail,并初始化,使它指向头节点,即pTail=pHead;

(2)在pTail后面添加节点,修改指针: 

       pTail->pNext=p;  

      p->pNext=NULL;

      pTail=p;              //使pTail指向链表最后一个元素

删除元素:

假如要删除节点2,只需要把节点1指针域指针指向节点3,但不要忘记释放节点2所占的内存,否则将会造成内存泄漏;首先必须找到节点2的前驱节点1,假设p指向节点1。

(1)q=p->pNext;   //首先用q保存要删除节点的地址;

(2)p->pNext=q->pNext;   //q->pNext=p->pNext->pNext;   修改指针使节点1指向节点3;

(3)free(q);  //释放节点2所占的内存;

尾删:

头删:

清空链表:

                           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值