码迷,mamicode.com
首页 > 编程语言 > 详细

已知单链表的数据元素为整型数且递增有序,L为单链表的哨兵指针。编写算法将表中值大于X小于Y的所有结点的顺序逆置。(C语言)

时间:2018-11-07 11:19:33      阅读:721      评论:0      收藏:0      [点我收藏+]

标签:.com   整型   data   com   ext   reverse   break   sizeof   amp   

对此题目的完整示例可直接运行代码如下:

#include <stdio.h>
#include <stdlib.h>
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode;
LNode* creat(int n){
    LNode *Link;
    LNode *p1,*p2;
    int data;
    Link=(LNode*)malloc(sizeof(LNode));
    p2=Link;
    for(int i=0;i<n;++i){  //一共n个数
        scanf("%d",&data);
        p1=(LNode*)malloc(sizeof(LNode));
        p1->data=data;
        p2->next=p1;
        p2=p1;
    }
    p2->next=NULL;
    return Link;
}

LNode* reverseList(LNode *&A,int X,int Y){   //传过来的链表发生了逆置的变化,所以加个&符合
    LNode *L;
    L=A->next;   //用哨兵指针L指向链表的第一个结点
    LNode *p,*q,*t;
    while(L->next!=NULL){
        if(L->next->data>X){
            p=L;  //p指向了大于X的结点的前一个结点
        //    printf("%d\n",p->data);  
            break;
        }
        L=L->next;
    }
    while(L->next!=NULL){
        if(L->next->data>=Y){
            q=L;  //q指向了最后小于Y的结点
        //    printf("%d\n",q->data);   
            break;
        }
        L=L->next;
    }
    while(p->next!=q){
        t=p->next;
        p->next=t->next;
        t->next=q->next;   
        q->next=t;
    }
    return A;     
}

void print(LNode *Link){
    LNode *p;
    p=Link->next;
    while(p!=NULL){    
        printf("%d",p->data);
        printf(" ");
        p=p->next;
    }
    printf("\n");
}

void main(){
    LNode *Link=NULL;
    int X,Y;
    int num;
    printf("共创建几个链表结点:");
    scanf("%d",&num);
    printf("请输入链表结点:\n");
    Link=creat(num);
    printf("已创建好的链表结点:");
    print(Link);
    printf("请输入X:");
    scanf("%d",&X);
    printf("请输入Y:");
    scanf("%d",&Y);
    reverseList(Link,X,Y);
    printf("将大于X小于Y的所有结点逆置后的链表结点:");
    print(Link);
}

运行结果如下:

技术分享图片

已知单链表的数据元素为整型数且递增有序,L为单链表的哨兵指针。编写算法将表中值大于X小于Y的所有结点的顺序逆置。(C语言)

标签:.com   整型   data   com   ext   reverse   break   sizeof   amp   

原文地址:https://www.cnblogs.com/tendo/p/9920779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!