• c语言动态链表的创建和插入



    #include <stdio.h>
    #include <malloc.h>
    #define LEN sizeof(struct student)
    struct student
    {
     long num;
     float score;
     struct student *next;
    };
    int n;
    int main()
    {
     struct student* creat();
     //struct student* del(struct student* head, long);
     struct student* insert(struct student*, struct student *);
     void print(struct student*);
     struct student*head, stu;
     //long del_num;
     printf("input records: ");
     head = creat();
     print(head);
     //printf("input the deleted number: ");
     //scanf("%d",&del_num);
     //head = del(head,&del_num);
     //head = del(head, del_num);
     //print(head);
     printf("input the inserted record: ");
     scanf("%d %f",&stu.num,&stu.score);
     head = insert(head, &stu);
     print(head);
     return 0;
    }
    struct student *creat()
    {
     struct student *head;
     struct student *p1, *p2;
     n = 0;
     p1 = p2= (struct student*)malloc(LEN);
     //p2 = (struct student*)malloc(LEN);
     scanf("%d %f", &p1->num, &p1->score);
     head = NULL;
     while (p1->num != 0)
     {
      n = n + 1;
      if (n == 1) head = p1;
      else p2->next = p1;
      p2 = p1;
      p1 = (struct student *)malloc(LEN);
      scanf("%d %f", &p1->num, &p1->score);
     }
     p2->next = NULL;
     return(head);
    }
    //struct student *del(struct student*head, long num)
    //{
    // struct student *p1, *p2;
    // if (head == NULL)
    // {
    //  printf(" list null! ");
    //  return(head);
    // }
    // p1 = head;
    // while (num!=p1->num&&p1->next != NULL)
    // {
    //  p2 = p1;
    //  p1 = p1->next;
    // }
    // if (num == p1->num)
    // {
    //  if (p1 == head) head = p1 ->next;
    //  else p2->next = p1->next;
    //  printf("delete:%d ", num);
    //  n = n - 1;
    // }
    // else
    // {
    //  printf("%d not been found! ", num);
    //  return(head);
    // }
    //}
    struct student*insert(struct student*head, struct student *stud)
    {
     struct student*p0, *p1, *p2;
     p1 =p2= head;
     p0 = stud;
     if (head == NULL)
     {
      head = p0;
      p0->next = NULL;
     }
     else
     {
      //for (; (p0->num > p1->num) && (p1->next != NULL);)
     
       while((p0->num > p1->num) && (p1->next != NULL))
      {
        p2 = p1;
      p1 = p1->next;
      }
       if (p0->num <= p1->num)
       {
        if (head == p1)
        {
         head = p0;
         p0->next = p2;
        }
        else
        {
         p2->next = p0; p0->next = p1;
        }
       }
      else
      {
      p1->next = p0; p0->next = NULL;
      }
      }
      n = n + 1;
      return (head);
    }

    //  if (p1->next == NULL)
    //  {
    //   if (p0->num > p1->num)
    //   {
    //    p1->next = p0;
    //    p0->next = NULL;
    //   }
    //   else
    //   {
    //    head = p0;
    //    p0->next = p1;
    //   }
    //  }
    //  else
    //  {
    //   p2 = p1;
    //   while (p0->num > p1->num)
    //   {
    //    p1 = p1->next;
    //   }
    //   if (p0->num <= p1->num)
    //   {
    //    p2->next = p0;
    //    p0->next = p1;
    //   }
    //   else
    //   {
    //    p1->next = p0;
    //    p0->next = NULL;
    //   }
    //  }
    // }
    //}
    void print(struct student *head)
    {
     struct student *p;
     printf("Now,these %d records are:", n);
     p = head;
     if (head != NULL)
     do
     {
      printf("%d %f ", p->num, p->score);
      p = p->next;
     } while (p != NULL);
    }

    //
     
  • 相关阅读:
    从GoogleClusterData统计每个用户的使用率、平均每次出价
    简单的大众点评爬虫
    导入GoogleClusterData到MySQL
    高斯分布(正态分布)
    解决Mysql无法导入存在null数据的问题
    使用Python操作MySQL
    [Vue warn]: Duplicate keys detected: '0'. This may cause an update error.
    css多行超出时,超出高度,显示省略号
    mock.js学习之路(二)easy-mock(Vue中使用)
    mock.js学习之路一(Vue中使用)
  • 原文地址:https://www.cnblogs.com/pquan/p/11518178.html
Copyright © 2020-2023  润新知