#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;
}

删除带头结点单链表中元素值小于x的所有元素
- 写回答
- 好问题 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无用