学习记录第十七天

链表:

尾插:

void push_back(struct Node *pHead,int n)
{
    if(isEmpty(pHead))//首先判断是否为头链表;
    {
        push_front(pHead,n);//是直接用头插;
    }
    else
    {
        struct Node *p = pHead->next;
           
        while(p->next != NULL)
        {
            p = p->next;
        }
        struct Node *pNew = malloc(sizeof(struct Node));
        p->next =pNew;
        pNew->next = NULL;
        pNew->data = n;
    }
}

头删:

void pop_front(struct Node *pHead)
{
    if(!(isEmpty(pHead)))
    {
        struct Node *p = pHead->next;
        pHead->next = p->next;
        free(p);
    }
}

尾删:

void pop_back(struct Node *pHead)
{
    if(size(pHead) >= 2)
    {

        struct Node *p = pHead->next;
        while(p->next->next != NULL)
        {
            p = p->next;
        }
        free(p->next);
        p->next = NULL;
    }
    else
    {
        pop_front(pHead);
    }
    
}

释放空间

void clear(struct Node *pHead)
{
    while(!isEmpty(pHead))//链表个数
    {
        pop_front(pHead);//用头删效率快
    }
}

共用体:

共用体(Union)是一种特殊的数据类型,
它允许在同一个内存位置存储不同的数据类型。
共用体的所有成员共享同一块内存空间,
因此同一时间只能存储其中一个成员的值。

共用体的定义和结构体类似,使用关键字union,后面跟着成员列表。
每个成员可以是不同的数据类型

共用体的主要特点:
  1. 共用体的大小取决于最大的成员的大小。
  2. 共用体的成员共享同一块内存空间只能同时存储其中一个成员的值
  3. 对共用体的任何成员的修改都会影响到其他成员
  4. 共用体的成员可以具有不同的数据类型,但它们在内存中的起始位置是相同的

共用体的主要用途有:

  1. 节省内存空间:当多个成员变量不会同时使用,但需要共享同一块内存空间时,可以使用共用体来节省内存。
  2. 数据类型转换:共用体可以用于不同类型之间的转换,通过存储一个成员变量,然后通过另一个成员变量来读取转换后的值。
union Demo
{
    int i;
    short s;
    char c;
};

小端存储

int bigOrLitter(union Demo *d)
{

    d->i = 0x12345678;
    if(d->c == 0x78)
    {
        printf("小端存储\n"};
    else
    {
        printf("大端存储\n");
    }
}

 

枚举类型:

枚举类型与整型兼容

enum Week//名称
{
    Sun,Mon,Tue,Wes,Thu,Fri,Sat//成员
};

typedef定义类型:

typedef可以改变类型名称

typedef int INT;//INT与int类型一样,名称不同;
typedef int ARRAY[10];

int main(void)
{
    INT i;
    ARRAY a;
    printf("%lu\n",sizeof(i));
    printf("%lu\n",sizeof(a));

    return 0;
}

位运算:

所有操作数为整型与和整型相兼容的类型;

&:指定位清零

|:指定位置1

^:指定位翻转

~:指定位取反

<<:使整体左移,后面补0;

>>:使整体右移,该数有符号时,正数补0,负数补1;无符号时,补0;

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值