zoukankan      html  css  js  c++  java
  • 链表

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include<stdlib.h>
    #include<string.h>

    #define SIZE 45
    typedef struct film
    {
    char tit[SIZE];
    int rating;
    struct film *next;

    } List;


    int main(){
    List * head = NULL;
    List *prev = NULL, *current = NULL;
    char input[SIZE];

    puts("输入电影的名称");
    while (gets(input) != NULL&&input[0]!='')
    //当输入不是空或者回车,开辟出一个结构体的大小
    {
    //current 指针 指向开辟出的malloc的空间
    current = (List*)malloc(sizeof(List));
    //结构体指针head head开始为null
    if (head == NULL)
    //将current指针指向的地址赋值给head
    head = current;//创建链表的头

    else{
    prev->next = current;//将current所开辟的新的空间地址赋值给prev->next,就是上一个的
    //指尾部
    }
    //struct film *next;
    //current所指的结构体中的next又开辟了一个结构体,作为下一个的结构体
    current->next = NULL;
    //将input里面的内容拷贝到current所指的结构体里面的tit里面
    strcpy(current->tit, input);

    puts("输入评分");
    scanf("%d", &current->rating);
    if (getchar() == 'q')
    break;
    puts("输入下一部电影");
    //将current的指针地址赋值给prev
    prev = current;
    //将current变成空指针
    current = NULL;
    }
    //head为null证明没有输入数据
    if (head == NULL)
    printf("没有数据输入 ");
    else
    //有数据输入
    printf("今年你看过的电影有: ");
    //将current重新指向开头的位置
    current = head;
    //current!=null证明这个结构体不是空
    while (current != NULL){

    printf("电影名称:%s 分数:%d ", current->tit, current->rating);
    //指向下一个结构体
    current = current->next;
    }

    //再次将current指针指向链表头部
    head = current;
    while (current != NULL){
    //释放所有malloc出来的结构体空间
    free(head);
    current = current->next;
    }
    system("pause");
    return 0;
    }

  • 相关阅读:
    并发编程三、线程可见性的底层原理
    并发编程二、线程的安全性和线程通信
    并发编程一、多线程的意义和使用
    Java进程监控
    分布式消息通信之RabbitMQ_Note
    分布式消息通信之RabbitMQ_02
    分布式消息通信之RabbitMQ_01
    分布式消息通信之RabbitMQ Tutorials
    SpringMVC重点分析
    Apache POI 4.0.1版本读取本地Excel文件并写入数据库(兼容 xls 和 xlsx)(五)
  • 原文地址:https://www.cnblogs.com/liaoxianfu/p/6285356.html
Copyright © 2011-2022 走看看