zoukankan      html  css  js  c++  java
  • C链表-C语言入门经典例题

    struct student

      long num;

      float score;

      struct student *next;

    };

    注意:只是定义了一个struct student类型,并未实际分配存储空间。只有定义了变量才分配内存单元。

    #include<iostream>
    using namespace std;
    int main() {
        struct student a,b,c,*head,*p;
        a.num = 99101;
        a.score = 89.5;
        b.num = 99103;
        b.score = 90;
        c.num = 99107;
        c.score = 85;        /*对结点的num和score成员赋值*/
        head = &a;        /*将结点a的起始地址赋给头指针head*/
        a.next = &b;        /*将结点b的起始地址赋给a结点的next成员*/
        b.next = &c;        /*将结点c的起始地址赋给b结点的next成员*/
        c.next = NULL;    /*c结点的next成员不存放其他结点地址*/
        p = head;        /*使p指针指向a结点*/
        do {
            cout<<p->num<<" "<<p->score;    /*输出p指向的结点的数据*/
            p=p->next;    /*使p指向下一结点*/
        } while (p!=NULL);    /*输出完c结点后p的值为NULL*/
        return 0;
    }

     C语言入门经典 单链表!

    /* Program 11.4   Daisy chaining the horses */
    #include <stdio.h>
    #include <ctype.h>
    #include <stdlib.h>
    
    int main(void)
    {
      struct horse                        /* Structure declaration       */
      {
        int age;
        int height;
        char name[20];
        char father[20];
        char mother[20];
        struct horse *next;               /* Pointer to next structure   */
      };
    
      struct horse *first = NULL;         /* Pointer to first horse      */
      struct horse *current = NULL;       /* Pointer to current horse    */
      struct horse *previous = NULL;      /* Pointer to previous horse   */
    
      char test = '';                   /* Test value for ending input */
    
      for( ; ; )
      {
        printf("
    Do you want to enter details of a%s horse (Y or N)? ",
                                           first != NULL?"nother " : "" );
        scanf(" %c", &test );
        if(tolower(test) == 'n')
          break;
    
        /* Allocate memory for a structure */
        current = (struct horse*) malloc(sizeof(struct horse));
    
        if(first == NULL)
          first = current;                /* Set pointer to first horse  */
    
        if(previous != NULL)
    
          previous -> next = current; /* Set next pointer for previous horse */
    
        printf("
    Enter the name of the horse: ");
        scanf("%s", current -> name);     /* Read the horse's name       */
    
        printf("
    How old is %s? ", current -> name);
        scanf("%d", &current -> age);     /* Read the horse's age        */
    
        printf("
    How high is %s ( in hands )? ", current -> name );
        scanf("%d", &current -> height);  /* Read the horse's height     */
    
        printf("
    Who is %s's father? ", current -> name);
        scanf("%s", current -> father);   /* Get the father's name       */
    
        printf("
    Who is %s's mother? ", current -> name);
        scanf("%s", current -> mother);   /* Get the mother's name       */
    
        current->next = NULL;             /* In case it's the last...    */
        previous = current;               /* Save address of last horse  */
      }
    
      /* Now tell them what we know. */
      current = first;                    /* Start at the beginning      */
    
      while (current != NULL)      /* As long as we have a valid pointer */
      { /* Output the data*/
        printf("
    
    %s is %d years old, %d hands high,",
                           current->name, current->age, current->height);
        printf(" and has %s and %s as parents.", current->father,
                                                   current->mother);
        previous = current;    /* Save the pointer so we can free memory */
        current = current->next;          /* Get the pointer to the next */
        free(previous);                   /* Free memory for the old one */
      }
      return 0;
    }

    双向链表:

    /* Program 11.5 Daisy chaining the horses both ways */
    #include <stdio.h>
    #include <ctype.h>
    #include <stdlib.h>
    
    int main(void)
    {
      struct horse                        /* Structure declaration       */
      {
        int age;
        int height;
        char name[20];
        char father[20];
        char mother[20];
        struct horse *next;             /* Pointer to next structure     */
        struct horse *previous;         /* Pointer to previous structure */
      };
    
      struct horse *first = NULL;         /* Pointer to first horse      */
      struct horse *current = NULL;       /* Pointer to current horse    */
      struct horse *last = NULL;          /* Pointer to previous horse   */
    
      char test = '';                   /* Test value for ending input */
    
      for( ; ; )
      {
        printf("
    Do you want to enter details of a%s horse (Y or N)? ",
                                            first == NULL?"nother " : "");
        scanf(" %c", &test );
        if(tolower(test) == 'n')
          break;
    
        /* Allocate memory for each new horse structure */
        current = (struct horse*)malloc(sizeof(struct horse));
    
        if( first == NULL )
        {
          first = current;                /* Set pointer to first horse  */
         current->previous = NULL;
        }
        else
        {
          last->next = current;    /* Set next address for previous horse */
          current->previous = last; /* Previous address for current horse */
        }
    
        printf("
    Enter the name of the horse: ");
        scanf("%s", current -> name );    /* Read the horse's name   */
    
        printf("
    How old is %s? ", current -> name);
        scanf("%d", &current -> age);     /* Read the horse's age    */
    
        printf("
    How high is %s ( in hands )? ", current -> name);
        scanf("%d", &current -> height);  /* Read the horse's height */
    
        printf("
    Who is %s's father? ", current -> name);
        scanf("%s", current -> father);   /* Get the father's name   */
    
        printf("
    Who is %s's mother? ", current -> name);
        scanf("%s", current -> mother);   /* Get the mother's name   */
    
        current -> next = NULL;      /* In case it's the last horse..*/
        last = current;              /* Save address of last horse   */
      }
    
      /* Now tell them what we know. */
      while(current != NULL)         /* Output horse data in reverse order */
      {
        printf("
    
    %s is %d years old, %d hands high,",
                   current->name, current->age, current->height);
        printf(" and has %s and %s as parents.", current->father,
                                                current->mother);
        last = current;       /* Save pointer to enable memory to be freed */
        current = current->previous; /* current points to previous in list */
        free(last);                 /* Free memory for the horse we output */
      }
      return 0;
    }
  • 相关阅读:
    107. Binary Tree Level Order Traversal II
    103. Binary Tree Zigzag Level Order Traversal
    102. Binary Tree Level Order Traversal
    690. Employee Importance
    1723. Find Minimum Time to Finish All Jobs
    LeetCode 329 矩阵中最长增长路径
    7.2 物理内存管理
    LeetCode 面试题 特定深度节点链表
    LeetCode 100 相同的树
    npm安装包命令详解,dependencies与devDependencies实际区别
  • 原文地址:https://www.cnblogs.com/qbmiller/p/3805639.html
Copyright © 2011-2022 走看看