闲来无事(一)_??、事"′:`↑q|:Φ闲∵`丨、丨{冫、1、` 。!!↓、刂、昂{↑了1`纯`r习:ⅰ-程序员宅基地

技术标签: 算法  

可以逗逗小朋友

#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
    
    int data;
    struct Node *next;
} node;
int size = 0;
node *creat();
void func(int k);
node *reverse(node *head , int k);
void print(node *head);
int main()
{
    
    int ret = 1;
    int k;
    while (ret != 0){
    
        printf("请你不加逗号地输入多个正整数\n");
        printf("注意:输入-1意味着停止,-1将不被计入\n");
        printf("例如:1 2 3 4 -1  , 那么有效数字为前四个\n");
        node *head = creat();
        printf("现在请输入一个正整数:\n");
        printf("注意:该正整数应大于等于2并且小于等于你所输入的有效数字的个数(不信你试试?)\n");
        scanf("%d",&k);
        if((k>size)||(k<=1)){
    
            func(k);
            ret = 0;
        } else {
    
            head = reverse(head , k);
            size = 0;
            printf("数据会变成这样的:");
            print(head);
            printf("\n");
            printf("请你想一想:我们在做什么(你可以多试几个例子)\n");
            printf("输入0即可结束,输入其他数字则继续尝试:");
            scanf("%d",&ret);
            printf("\n");
        }
    }
    return 0;
}
node *creat(){
    
    node *head = (node *)malloc(sizeof(node));
    node *hd = head;
    int n,flag = 1;
    while (flag == 1){
    
        scanf("%d",&n);
        if(n != -1){
    
            node *np = (node *)malloc(sizeof(node));
            np->next = NULL;
            np->data = n;
            hd->next = np;
            hd = np;
            size++;
        } else {
    
            flag = 0;
        }
    }
    head = head->next;
    return head;
}
node *reverse(node *head , int k){
    
    int zu = size / k;
    int i = 1,cnt = 1;
    node *p = head;
    node *np = head->next;
    node *tp;
    node *hd;
    node *temphd1;
    node *temphd2;
    node *tail1;
    node *tail2;
    if(zu == 1){
    
        while(cnt <= k-1){
    
            tp = np->next;
            np->next = p;
            p = np;
            np = tp;
            if(cnt == k-1){
    
                hd = p;
                head->next = np;
                return hd;
            }
            cnt++;
        }
    } else if(zu > 1){
    
        for(i = 1; i <= zu; i++){
    
            np = p->next;
            for(cnt = 1;cnt <= (k-1);cnt++){
    
                if(cnt == 1){
    
                    if(i%2 == 1){
    
                        tail1 = p;
                    } else if(i%2 == 0){
    
                        tail2 = p;
                    }
                }
                tp = np->next;
                np->next = p;
                p = np;
                np = tp;
                if(cnt == k-1){
    
                    if(i%2 == 1){
    
                        temphd1 = p;
                    } else if(i%2 == 0){
    
                        temphd2 = p;
                    }
                }
                if(cnt == k-1){
    
                    if(i%2 == 1){
    
                        if(i == 1){
    
                            hd = temphd1;
                            p = np;
                        } else if(i < zu && i > 1){
    
                            tail2->next = temphd1;
                            p = np;
                        } else if(i == zu){
    
                            tail2->next = temphd1;
                            tail1->next = np;
                        }
                    } else if(i%2 == 0){
    
                        if(i == zu){
    
                            tail1->next = temphd2;
                            tail2->next = np;
                        } else if(i < zu){
    
                            tail1->next = temphd2;
                            p= np;
                        }
                    }
                }
            }

        }
    }
    return hd;
}
void print(node *head){
    
    node *p = head;
    while (p != NULL){
    
        printf("%d ",p->data);
        p = p->next;
    }
}
void func(int k){
    
    printf("还真试,年轻人不讲武德\n");
}

害写了大半天

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_50648497/article/details/113544141

智能推荐

Python相关常用库概念介绍_相关库的介绍-程序员宅基地

文章浏览阅读8.6k次。关于一些常用到的python库,在这里收集整理一下概念,大致熟悉一下,等到遇到的时候,心里就有个底了time,bson,hashlib ,os,random,Image,ImageEnhance,math,smtplib,email,uuid,urllib,re,syslog,traceback,functools,jinja2,Werkzeug,redis,pymongo,flask1._相关库的介绍

C语言编程小练习4(嵌套循环)_输入一个行数(必须是奇数),输出如下图形,下图为输入行数为7时的图形,请在回复里写-程序员宅基地

文章浏览阅读4.1k次,点赞8次,收藏32次。C语言编程小练习4(嵌套循环)4.1输入如下图所示的图案(注:星号之间没有空格) 1 #include&lt;stdio.h&gt; 2 3 int main(void) 4 { 5 int i, j; 6 for (i = 1; i &lt;= 9; i++) { 7 for (j = 1; j &lt;= 9 - i;j++..._输入一个行数(必须是奇数),输出如下图形,下图为输入行数为7时的图形,请在回复里写

Java黑皮书课后题第6章:**6.29(双素数)双素数是指一对差值为2的素数。例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数_双素数是指一对差值为2的素数例如3和5-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏6次。6.29(双素数)双素数是指一对差值为2的素数。例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数题目题目描述破题代码运行示例题目题目描述6.29(双素数)双素数是指一对差值为2的素数。例如,3和5就是一对双素数,5和7是一对双素数,而11和13也是一对双素数。编写程序,找出小于1000的所有双素数。以如下所示(格式)显示结果:(3,5)(5,7)……破题遍历从2到997的所有正整数(这部分作为较小值),较大值则加2即可对_双素数是指一对差值为2的素数例如3和5

Vue 3 + TypeScript + Vite + Element-Plus + Router + Axios + Pinia项目搭建(内含完整架构)_typescript+axios+elementplus-程序员宅基地

文章浏览阅读1.9k次,点赞6次,收藏19次。Vue 3 + TypeScript + Vite + Element-Plus + Router + Axios + Pinia项目搭建(内含完整架构)_typescript+axios+elementplus

python内置函数之enumerate和sum函数_enumerate(li)-程序员宅基地

文章浏览阅读914次,点赞3次,收藏4次。1 enumerate简介格式enumerate(iterable, start=0)功能返回一个枚举对象, 其中iterable必须是序列,迭代器或其他支持迭代的对象.迭代器的__next__()方法的返回值,通过enumerate返回,值类型为tuple,包括从start(默认为0)技术的数字和迭代器包含的数据.2 案例2.1 遍历一维列表li = ["tianlanlan", ..._enumerate(li)

【杭电】HDU 1052 Tian Ji -- The Horse Racing_杭电d - tian ji -- the horse racing-程序员宅基地

文章浏览阅读537次。Tian Ji -- The Horse RacingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 26252 Accepted Submission(s): 7735Problem Description Here is a_杭电d - tian ji -- the horse racing

随便推点

Java设计模式--单例模式_设计模式单例模式java数据库连接池单例模式-程序员宅基地

文章浏览阅读791次,点赞9次,收藏2次。目录什么是单例模式:单例的特点:单例优缺点:单例模式的优点:单例模式的缺点:单例应用场景:单例模式的结构:单例模式的实现:1.饿汉式2.懒汉式饿汉式和懒汉式区别:什么是单例模式: 顾名思义就是只有一个实例,并且她自己负责创建自己的对象,这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例的特点: 单例类只有一个实例对象; 该单例对象必须由单例类自行创建; 单例类对外提供一个访问该单..._设计模式单例模式java数据库连接池单例模式

IRIS 2021 技术文档 First Look 19 使用 InterSystems 产品优化 SQL 性能-程序员宅基地

文章浏览阅读162次。*/技术概要:使用 InterSystems 产品优化 SQL 性能使用 InterSystems SQL 优化查询使用 EXPLAIN 关键字显示查询计划在管理门户(Management Portal)中使用 SQL 查询接口显示查询计划发现查询计划结果中潜在的性能问题测试查询执行测试位片索引(Bitslice Index)的效果向交易类型字段(TransactionType Fie..._using java jdbc with intersystems iris

在Launcher3中增加主题切换功能_android launch3 添加主题-程序员宅基地

文章浏览阅读7.8k次。1 \packages\apps\Launcher3\res\layout\theme_picker.xml android:layout_width="match_parent" android:layout_height="match_parent" > ="http://schemas.android.com/apk/res/_android launch3 添加主题

用上vueDevtools,让你查找vue项目中的问题快如起飞!_jre插件未加入白名单-程序员宅基地

文章浏览阅读708次。由于chrome浏览器更新后,添加vueDevtools插件会报错,查明原因后,是因为没有将该插件加入白名单。 解决方法如下: 1. 首先,下载“chrome - adm.rar”并解压. 2. 在运行里输入 gpedit.msc. 3. 在 计算机配置 > 管理模板菜单上右击,选择“添加/删除模板. 4. 点击添加,添加上找到下载的“chrome.adm”文件后,关闭“添加/删除模板”窗口. 5. 在 管理模板 -> 经典管理模板-> Goo..._jre插件未加入白名单

编译openblas报错:no such instruction: vpermpd_no such instruction: `vpcmpneqb-程序员宅基地

文章浏览阅读2.3k次。在centos6.5下编译OpenBLAS时报了好多类似下面的错误: ../kernel/x86_64/dgemm_kernel_4x8_haswell.S:1759: Error: no such instruction: `vpermpd $ 0xb1,%ymm0,%ymm0‘在网上找到了解决办法[《centos6.7安装openblas错误》] (http://www.bubu_no such instruction: `vpcmpneqb

惯性导航系统INS与GPS_卫导1pps csdn-程序员宅基地

文章浏览阅读8.9k次。惯性导航系统INS(Inertia Navigation System)参考http://baike.baidu.com/view/1574404.htm定义1:能完成惯性导航任务的成套装置。 应用学科:船舶工程(一级学科);船舶通信导航(二级学科) 定义2:应用高精度的陀螺仪和加速度计等惯性敏感器件测量运动载体的加速度,再经过计算机解算出运动载体的加速度、位置、姿态和航向等导航参数的_卫导1pps csdn