删除有序单链表中值大于x而不大于y的结点

删除有序单链表中值大于x而不大于y的结点

代码实现

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define FLAG -1    //停止输入的标志
typedef struct Node
{
    int data;
    struct Node * next;
}LNode,*LinkList;

void CreateLinkList(LinkList L);
void show_List(LinkList L);
void DelLink(LinkList L,int x,int y);//前提是单链表有序!

void main()
{
    LinkList L;
    L = (LinkList)malloc(sizeof(LNode));//创建头结点
    printf("创建单链表:\n");
    CreateLinkList(L);//假设单链表从1-8
    printf("遍历单链表:\n");
    show_List(L);
    printf("删除指定区间后的单链表:\n");
    DelLink(L,4,7);
    show_List(L);
}

void CreateLinkList(LinkList L)  //尾插法  输出是输入的正序
{
    LinkList s,r;
    int x;
    scanf("%d",&x);
    r = L;
    while(x != FLAG)
    {
        s = (LNode *)malloc(sizeof(LNode));
        s->data = x;
        r->next = s;
        r = s;
        scanf("%d",&x);
    }
    r->next = NULL;
}

void show_List(LinkList L)
{
    LinkList p = L->next;
    printf("%d",p->data);
    p = p ->next;
    while(p != NULL)
    {
        printf("->%d",p->data);
        p = p->next;
    }
    printf("\n");
}

void DelLink(LinkList L,int x,int y)
{
    LinkList p,q,s;
    p = L->next;
    while((p != NULL) && (p->data <= x))
    {
        q = p;
        p = p->next;
    }
    while((p != NULL) && (p->data <= y))
    {
        s = p;
        p = p->next;
        //删除结点
        //q->next = p;
        free(s);
    }
    q->next = p; //
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值