zoukankan      html  css  js  c++  java
  • C语言:创建动态单向链表,创建完成后,输出每一个节点的数据信息。

    //

    //  main.c

    //  dynamic_link_list

    //

    //  Created by ma c on 15/8/5.

    //  Copyright (c) 2015. All rights reserved.

    //  要求:写一个函数建立有3名学生数据的动态单向链表,并输出链表中每个结点的所有内容。

     

    /*

    建立动态链表的思想:

      1、开辟一个新结点,并使p1,p2指向它;

      2、读入一个学生数据给p1所指的结点;

      3、head = NULL,n = 0;

      4、判断读入的p1->num是否为0。

           如果p1->num!=0,n = n+1;此时n==1?

                                    如果n==1,head=p1(p1所指的结点作为第一个结点)

                                    如果n!=1,p2->next=p1(把p1所指的结点连接到表尾)

                                            p2=p1;(p2移到表尾)

                                            再开辟一个新结点,使p1指向它;

                                            读入一个学生数据给p1所指接点;

                                            表尾结点的指针变量置NULL。

           如果p1->num==0,链表结束,退出程序。

     

     输出链表的思想:

       1、p=head,使p指向第一个结点

       2、判断p指向的是不是尾节点?

                如果不是,输出p所指向的结点,p指向下一个结点;

                如果是,链表结束,退出程序。

    */

    #include <stdio.h>

    #include<stdlib.h>

    #define LEN sizeof(Student)

    typedef struct student

    {

        int num;

        float socre;

        struct student *next;

    }Student;

    int n;     //定义一个全局变量

    Student *createlist(void)

    {

        Student *p1,*p2,*head;

        int n = 0;

        //开辟一个新单元

        p1 = p2 = (Student*)malloc(LEN);

        //输入第一个学生的学号和成绩

        scanf("%d,%f",&p1->num,&p1->socre);

        head = NULL;

        while(p1->num!=0)

        {

            n = n+1;

            if(n==1)

            {

                head = p1;

            }

            else

            {

                p2->next = p1;

            }

            p2 = p1;

            p1 = (Student *)malloc(LEN);

            scanf("%d,%f",&p1->num,&p1->socre);

        }

        p2->next = NULL;

        return head;

    }

    void printlink(Student *pt)

    {

        while(pt!=NULL)

        {

            printf(" num:%d score:%5.1f ",pt->num,pt->socre);//输出每个结点的成员值

            pt = pt->next;

        }

    }

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

    {

        Student *pt;

        pt = createlist();//函数返回链表的第一个结点的地址

        printlink(pt);

        return 0;

    }

     

  • 相关阅读:
    Java开源框架推荐(全)
    Java性能提示(全)
    国外程序员整理的 C++ 资源大全 (zt)
    技术杂记之:在阿里云centos7上部署JDK MYSQL TOMCAT
    技术杂记之:vi使用入门
    Java全栈程序员之09:IDEA+GitHub
    SpringCloud无废话入门05:Spring Cloud Gateway路由、filter、熔断
    SpringCloud无废话入门04:Hystrix熔断器及监控
    SpringCloud无废话入门03:Feign声明式服务调用
    SpringCloud无废话入门02:Ribbon负载均衡
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/4705803.html
Copyright © 2011-2022 走看看