zoukankan      html  css  js  c++  java
  • 第三组两个有序表合并

    #include<stdio.h>
    #include<stdlib.h>

    typedef struct List
    {
     int data;
     struct List *next;
    } List;

    List *createlist();
    void printflist(List *pre);
    List *sort(List *head);
    List *add(List *L1,List *L2);

    int main()
    {
       List *L1,*L2,*L3,*L;
       L1=createlist();
       L2=createlist();
       L3=add(L1,L2);
       L=sort(L3);
       printflist(L) ;
    }

    List *createlist()
    {
     List *L,*p,*q;
        L=(List*)malloc(sizeof(List*));
        L->next=NULL;
     p=L;
        int m;
     scanf("%d",&m);
     if(m!=-1)
     {
      L->data=m;
      p=L;
     } 
     else
         return 0;
         scanf("%d",&m);
     while(m!=-1)
     {
      q=(List*)malloc(sizeof(List*));
      q->data=m;
      p->next=q;
      p=q;
      scanf("%d",&m);
     }
     p->next=NULL;
     return L;
    }

    List *add(List *L1,List *L2)
    {
     List *p,*q,*pre,*r;
     p=L1->next;
     pre=L1;
     q=L2;
     r=pre;
     while(p!=NULL)
     {
        pre->next=p;
        pre=pre->next;
        p=p->next; 
        }
        while(q!=NULL)
        {
         pre->next=q;
         pre=pre->next;
         q=q->next;
        }
        pre->next=NULL;
        return r;
    }

    void printflist(List *L)
    {
     while(L)
     {
      if(L->next!=NULL)
      {
         printf("%d ",L->data);
         }
         else
            printf("%d",L->data);
         L=L->next;
     }
    }

    List *sort(List *head)
    {
     List *p,*pre,*q;
     p=head->next->next;
     head->next->next=NULL;
     while(p!=NULL)
     {
      q=p->next;
      pre=head;
      while(pre->next!=NULL&&pre->next->data<p->data)
         pre=pre->next;
      p->next=pre->next;
      pre->next=p;
      p=q;  
     }
     return head;
    }

    这又合并两条单链表并排序的题目呢,在PTA上未能实现满分。

    主要有一下几点错误;

    1.当输入第一条链表的第一个数字为-1时,程序就无法运行。

    2.组员对指针的移动掌握不熟悉,常常使指针指向错误。

    3.部分组员的printList函数出错,主要是对题目没有认真审题,对题目要求的末尾无空格没有特殊处理。

    4.对于结构体,结构体函数和typedef的运用不熟悉。

    5.对链表指针与指向指针的指针概念混淆。

    未解决错误的第一点。

    希望老师能对链表指针与指向指针的指针给我们做个辨析。

  • 相关阅读:
    SpringMVC:拦截器拦截时机和原理
    SpringBoot:MessageConverter自动配置原理
    SpringMVC:返回值处理器原理和MessageConverter原理
    SpringMVC:自定义Converter
    XML-RPC协议学习
    ContentControl 与 ViewModel (一)
    C# 获取相对路径(绝对路径转相对路径)
    WPF 最简单的TextBox水印
    WPF/Silverlight开发的15个最佳实践(转发)
    WPF 打印崩溃问题( 异常:Illegal characters in path/路径中有非法字符)
  • 原文地址:https://www.cnblogs.com/hamawep789/p/6542336.html
Copyright © 2011-2022 走看看