现在的位置: 首页 > 综合 > 正文

C++_链表

2016年08月30日 ⁄ 综合 ⁄ 共 1071字 ⁄ 字号 评论关闭
//***** 静态链表 *****
//***** 结构体链表 *****
void test1()
{
    struct book  // 定义一个book结构体
    {
        int num;
        float price;
        struct book *next;
    };

    struct book x,y,z;
    struct book *p = NULL;
    struct book *head = NULL;

    // 结构体x
    x.num = 100;
    x.price = 13.0f;

    // 结构体y
    y.num = 101;
    y.price = 14.0f;

    // 结构体z
    z.num = 102;
    z.price = 15.0f;

    // 头节点设置为x的地址,尾节点分别设置为y,z,最后z的尾节点设置为NULL,最后尾节点为空,这样才能让编译器知道已经到达链表结尾
    head = &x;
    x.next = &y;
    y.next = &z;
    z.next = NULL;
    p = head;

    // 循环输出结构体链表
    while(p != NULL)
    {
        std::cout << "num:" << p->num << std::endl;
        std::cout << "price:" << p->price << std::endl;
        p = p->next;
    }

    /*
    结构体链表比较浅显易懂,理解了结构体链表之后,再学习类的链表就不那么抽象和晦涩了
    */
}

//***** 类链表 *****
void test2()
{
    class book  // 定义一个book类
    {
    public:
        int num;
        float price;
        book *next;
    };

    book x,y,z;
    book *p = NULL;
    book *head = NULL;

    // 结构体x
    x.num = 100;
    x.price = 13.0f;

    // 结构体y
    y.num = 101;
    y.price = 14.0f;

    // 结构体z
    z.num = 102;
    z.price = 15.0f;

    // 头节点设置为x的地址,尾节点分别设置为y,z,最后z的尾节点设置为NULL,最后尾节点为空,这样才能让编译器知道已经到达链表结尾
    head = &x;
    x.next = &y;
    y.next = &z;
    z.next = NULL;
    p = head;

    // 循环输出类链表
    while(p != NULL)
    {
        std::cout << "num:" << p->num << std::endl;
        std::cout << "price:" << p->price << std::endl;
        p = p->next;
    }

    /*
    先看看结构体链表,再看看类类链表,就比较容易理解了
    像这样的链表实际上是静态链表,链表中所有的节点的数据在编译时就已经确定好了,不会在运行时再进行动态地分配空间,比如创建、添加和删除等操作
    这样的链表叫"静态链表"
    */
}

【上篇】
【下篇】

抱歉!评论已关闭.