AAAAAASCORPIO 2022-09-29 19:34 采纳率: 50%
浏览 39

要求删除表中重复元素。例:输入1 2 3 3 4 输出1 2 3 4

代码没有输出
#include<stdio.h>
#include<stdlib.h>
typedef int Elemtype;
typedef struct LNode{
Elemtype data;
struct LNode *next;
}LNode,*Linklist;
void Init_Linklist(Linklist *L)
{
*L=(Linklist)malloc(sizeof(LNode));
(L)->next=NULL;
}
void Create_Linklist(Linklist
L,int Len)
{
LNode *p,*q;
p=*L;
for(int i=0;i<Len;i++){
q=(Linklist)malloc(sizeof(LNode));
scanf("%d",&q->data);
p->next=q;
p=q;
}
p->next=NULL;
}
void DeleteSame(Linklist *L)
{
LNode *p,*q,*s;
p=(*L)->next;
for(p;p!=NULL;p=p->next)
{
s=p;
for(q=p->next;q!=NULL;)
{
if(q->data==p->data)
{
s->next=q->next;
free(q);
q=s->next;
}
else
{
s=q;
q=q->next;
}
}
}
}
void Print_Linklist(Linklist *L)
{
LNode *p;
p=*L;
while(p->next)
{
p=p->next;
printf("%d ",p->data);
}
printf("\n");
}
int main(){
int Len;
Linklist L;
Init_Linklist(&L);
Create_Linklist(&L,Len);
scanf("%d ",&L);
DeleteSame(&L);
Print_Linklist(&L);
return 0;
}

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2022-09-29 19:55
    关注

    main方法中,调用Create_Linklist(&L,Len);时,Len的值都没有。

    
    while(1){
    q=(Linklist)malloc(sizeof(LNode));
    scanf("%d",&q->data);
    p->next=q;
    p=q;
    char c=getchar();
    if(c=='\n'){
      break;
    }
    }
    
    
    int main(){
    int Len;
    Linklist L;
    
    scanf("%d",&Len);
    Init_Linklist(&L);
    Create_Linklist(&L,Len);
    DeleteSame(&L);
    Print_Linklist(&L);
    return 0;
    }
    
    评论 编辑记录
  • qzjhjxj 2022-09-29 23:02
    关注

    改动处见注释,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    typedef int Elemtype;
    typedef struct LNode{
        Elemtype data;
        struct LNode *next;
    }LNode,*Linklist;
    void Init_Linklist(Linklist *L)
    {
        *L=(Linklist)malloc(sizeof(LNode));
        (*L)->next=NULL;
    }
    void Create_Linklist(Linklist L,int Len)
    {
        LNode *p,*q;
        p = L;       //p=*L;  修改
        for(int i=0; ;i++){// i<Len 修改
            q=(Linklist)malloc(sizeof(LNode));
            scanf("%d",&q->data);
            p->next=q;
            p = q;
            char c = getchar();   //修改
            if (c == '\n')  break;//修改
        }
        p->next=NULL;
    }
    void DeleteSame(Linklist L)//(Linklist *L) 修改
    {
        LNode *p,*q,*s;
        p = L->next;         //p=(*L)->next; 修改
        for(p;p!=NULL;p=p->next)
        {
            s=p;
            for(q=p->next;q!=NULL;)
            {
                if(q->data==p->data)
                {
                    s->next=q->next;
                    free(q);
                    q=s->next;
                }
                else{
                    s=q;
                    q=q->next;
                }
            }
        }
    }
    void Print_Linklist(Linklist L) //Linklist *L) 修改
    {
        LNode *p;
        p = L;     //p=*L; 修改
        while(p->next)
        {
            p=p->next;
            printf("%d ",p->data);
        }
        printf("\n");
    }
    
    int main(){
        int Len = 0; //修改
        Linklist L;
        Init_Linklist(&L);
        //scanf("%d ",&Len);//修改
        Create_Linklist(L,Len);//(&L,Len) 修改
        DeleteSame(L);//(&L) 修改
        Print_Linklist(L);//(&L) 修改
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月29日

悬赏问题

  • ¥20 arcgis制做交通拥堵时变图
  • ¥15 AD20 PCB板步线 这个要怎么步啊
  • ¥50 关于《奇迹世界》1.5版本,数据修改
  • ¥15 请问这个问题如何解决(关键词-File)
  • ¥50 visual studio 2022和EasyX图形化界面
  • ¥15 找一下报错原因,纠正一下
  • ¥50 Cox回归模型Nomogram图制作报错
  • ¥20 SQL如何查询多级用户的数据
  • ¥15 给车牌识别代码加一个识别轮廓长宽比的代码
  • ¥30 商品价格预测的transformer模型优化