zoukankan      html  css  js  c++  java
  • 12月16号 双链表

          双链表是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

    #include <stdio.h>

    #include <stdlib.h>

     

    //创建双链表中的一个结点的结构体

    typedef struct node{

        struct node *previous;

        int age;

        struct node *next;

    }Node;

     

    int main(int argc, const char * argv[]) {

        

        //创建头指针

        Node *pHead = NULL;

        Node *pTail = NULL;

        

        for (int i = 0; i < 5; i++) {

            //为结点申请一片内存空间

            Node *pTemp = (Node *)malloc(1 * sizeof(Node));

            if (pTemp == NULL) {

                exit(EXIT_FAILURE);

            }

            

            //age

            printf("请输入年龄:");

            scanf("%d", &pTemp->age);

            

            //next

            pTemp->next = NULL;

            

            //previous

            if (pHead == NULL) {

                //这个是第一个结点,第一个结点的previous指针为空

                pTemp->previous = NULL;

                

                //pTemp指向的结点成为第一个结点

                pHead = pTemp;

                pTail = pTemp;

            } else{

                //pTail指向的结点的next指针指向现在创建的pTemp结点

                pTail->next = pTemp;

                

                //pTempprevious指针指向pTail结点

                pTemp->previous = pTail;

                

                //pTail指针指向最后一个结点

                pTail = pTemp;

                

                //头结点的previous指针指向最后一个结点

                pHead->previous = pTail;

                

                //尾结点的next指针指向头结点

                pTail->next = pHead;

            }

        }

        

        Node *pTemp = pHead;

        while (pTemp != NULL) {

            printf("%d ", pTemp->age);

            pTemp = pTemp->next;

            if (pTemp == pHead) {

                break;

            }

        }

        printf(" ");

        return 0;

    }

  • 相关阅读:
    C#函数式编程
    三种观察者模式的C#实现
    使用C#设计Fluent Interface
    02.Python网络爬虫第二弹《http和https协议》
    03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》
    第七章:Python基础のXML操作和面向对象(一)
    第五章:Python基础の生成器、迭代器、序列化和虚拟环境的应用
    第六章:Python基础の反射与常用模块解密
    第四章:Python基础の快速认识內置函数和操作实战
    第三章:Python基础の函数和文件操作实战
  • 原文地址:https://www.cnblogs.com/hmzxwky/p/5051966.html
Copyright © 2011-2022 走看看