12.2共用体

#include<stdio.h>
union sample
{
    short i;
    char ch;
    float f;
};
typedef union sample SAMPLE;
int main()
{
    printf("%d\n",sizeof(SAMPLE));
    return 0;
}

//输出4个字节。共用体类型所占内存空间的大小取决于其成员中占内存空间最大的哪一个。在每一瞬间起作用的成员就是最后一次被赋值的成员,不能为共用体的所有成员同时进行初始化,只能对第一个成员进行初始化。共用体不能进行比较操作,也不能作为函数的参数。
//SAMPLE num; num.i=20;

//枚举数据类型
enum response{no,yes,none};//定义了一个枚举类型,no->0,yes->1,none->2;
enum response answer;//定义了一个枚举类型的变量
if(answer==yes)
{
…;
}
enum{no,yes,none}answer;

//定义一个枚举类型的数组
enum response answer[10];

enum response{no=-1,yes=1,none=0};//指定枚举常量的值
enum response{no=1,yes,none};//其后依次递增1
//枚举常量虽然是字符串,但是以整数值表示

12.3动态数据结构—单向链表

struct link
{
    int date;
    struct link *next;
};
//链表只能顺序访问,不能随机访问0,尾插法
#include<stdio.h>
struct link
{
    int date;
    struct link *next;
};
struct link *AppendNode(struct link *head)
{
    struct link *p=NULL,*pr=head;
    int date;
    p=(struct link *)malloc(sizeof(struct link));
    if(p==NULL)
    {
        exit(0);
    }
    if(head==NULL)
    {
        head=p;
    }
    else
    {
        while(pr->next!=NULL)
        {
            pr=pr->next;
        }
        pr->next=p;
        scanf("%d",&date);
        p->date=date;
        p->next=NULL;
        return head;
    }
}

void DisplyNode(struct link *head)
{
    struct link *p=head;
    while(p!=NULL)
    {
       printf("%d ",p->date);
        p=p->next;
    }
}

void DeleteMemory(struct link *head)
{
    struct link *p=head,*q=NULL;
    while(p!=NULL)
    {
        q=p;
        p=p->next;
        free(q);
    }
}

int main()
{
    int i=0;//节点的个数
    char c;
    struct link *head=NULL;
    scanf(" %c",&c);//前面有一个空格
    while(c='y'||c='Y')
    {
        head=AppendNode(head);
        DisplyNode(head);
        scanf(" %c",&c);
        i++;
    }
    DeleteMemory(head);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

身影王座

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值