• 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;

    }

  • 相关阅读:
    SQL(二)语法
    SQL(一)简介
    linux学习(六)文件基本属性
    Linux学习(五)远程登录
    Linux学习(四) 忘记密码解决方法
    怎样理解阻塞非阻塞与同步异步的区别?
    Python的lambda匿名函数
    Twisted源码分析系列01-reactor
    Python装饰器学习(九步入门)
    Python关键字yield的解释
  • 原文地址:https://www.cnblogs.com/hmzxwky/p/5051966.html
Copyright © 2020-2023  润新知