zoukankan      html  css  js  c++  java
  • 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);
    }

    //
     
  • 相关阅读:
    mysql主从配置(清晰的思路)
    Nginx在linux下安装及简单命令
    使用PowerShell 测试DNS
    使用PowerShell 修改DNS并加入域中
    使用PowerShell 自动安装IIS 及自动部署网站
    使用PowerShell 自动创建DFS复制组
    使用PowerShell 自动创建DFS命名空间服务器
    使用PowerShell 在域内远程安装DFS
    使用PowerShell 将用户添加至用户组
    使用PowerShell 修改hosts
  • 原文地址:https://www.cnblogs.com/pquan/p/11518178.html
Copyright © 2011-2022 走看看