白日梦也迷茫 2021-09-22 14:02 采纳率: 90.5%
浏览 276
已结题

删除带头结点单链表中元素值小于x的所有元素


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

typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

LinkList CreateList_n(int n)
{
    LinkList  L,p,q;
    L=p=(LinkList)malloc(sizeof(LNode));
    ElemType  e;
    int  i;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&e);
        q=(LinkList)malloc(sizeof(LNode));
        q->data=e;
        p->next=q;
        p=q;
    }
    p->next=NULL;
    return  L;
}

void PrintList(LinkList L)
{
    LNode *p=L->next;
    while(p)
    {
        printf("%d ",p->data);
        p=p->next;
    }
}
void DeleteListLessThanX(LinkList L,ElemType x) //就这边出了问题吧应该,不会改
{
    LNode *p;
    p=L->next;
    scanf("%d",&x);
    while(p!=NULL)
    {
        if(p->data<x)
        {
            p->next=p->next->next;
        }
        p=p->next;
    }
}
int main()
{
    int n,x;
    LinkList L;
    scanf("%d",&n);
    L=CreateList_n(n);
    getchar();
    scanf("%d",&x);
    DeleteListLessThanX(L,x);
    PrintList(L);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • 王陈锋 2021-09-22 16:01
    关注
    
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    typedef int ElemType;
    typedef struct LNode
    {
        ElemType data;
        struct LNode *next;
    }LNode,*LinkList;
    void PrintList(LinkList L);
    LinkList CreateList_n(int n)
    {
        int i=0;
        LinkList L;
        LNode *p,*q;
        L=(LinkList)malloc(sizeof(LNode));
        L->next=NULL;
        p=L;
        while(i<n)
        {
            q=(LinkList)malloc(sizeof(LNode));
            scanf("%d",&q->data);
            q->next=NULL;
            p->next=q;
            p=q;
            i++;
        }
        return L;
    }
    void PrintList(LinkList L)
    {
        LNode *p;
        p=L->next;
        while(p!=NULL)
        {
            printf("%d ",p->data);
            p=p->next;
        }
    }
    void DeleteListLessThanX(LinkList L,ElemType x) //就这边出了问题吧应该,不会改
    {
        LNode *p,*q;
        p=L;
        while(p!=NULL)
        {
            if(p->data<x)
            {
                q=p->next;
                p->data=q->data;
                p->next=q->next;
            }
            p=p->next;
        }
    }
    int main()
    {
        int n,x;
        LinkList L;
        printf("n=");
        scanf("%d",&n);
        L=CreateList_n(n);
        PrintList(L);
        printf("x=");
        scanf("%d",&x);
        DeleteListLessThanX(L,x);
        printf("数据展示");
        PrintList(L);
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月1日
  • 已采纳回答 9月23日
  • 创建了问题 9月22日

悬赏问题

  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统