zoukankan      html  css  js  c++  java
  • 反转链表

    1025 反转链表 (25)(25 分)

    给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3,则输出应该为3→2→1→6→5→4;如果K为4,则输出应该为4→3→2→1→5→6,即最后不到K个元素不反转。

    输入格式:

    每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址、结点总个数正整数N(<= 105)、以及正整数K(<=N),即要求反转的子链结点的个数。结点的地址是5位非负整数,NULL地址用-1表示。

    接下来有N行,每行格式为:

    Address Data Next

    其中Address是结点地址,Data是该结点保存的整数数据,Next是下一结点的地址。

    输出格式:

    对每个测试用例,顺序输出反转后的链表,其上每个结点占一行,格式与输入相同。

    我只能说这个反转链表有点恶心啊,我自己想了半天都没有看懂题意也是emmmm,(注意一点:整数可以是打乱顺序的,题目只是为了方便才那样的,不要用sort()那个方法,好好读题目吧)
    这个题是要根据整数的Address地址进行排序,排序后进行反转,C++有反转函数方法,这个反转不能达到题目要求的,但是第一个数的Next地址是第二个数的Address,所以反转之后,在输出的时候,把下一个数的Address放到这个数的Next进行输出,最后一个数进行判断填上-1即可。

    #include<iostream>
    #include<vector>
    #include<algorithm>
    #define N 100005
    using namespace std; 
    
    struct node{
    	int yuan;
    	int t;
    	int next;
    }; 
    struct Data{
    	int t;
    	int next;
    };
    int main(){
    	int n,a,b,q,p,k;
    	 node temp;
    	 Data D[N];
        vector<node> in;
        vector<node> ou;
    	int first;
    	cin>>first>>n>>k;
    	for(int i=0;i<n;i++){
    		cin>>temp.yuan>>temp.t>>temp.next;
    		in.push_back(temp);
    		if(temp.yuan==-1){
    			continue;
    		}
    		D[temp.yuan].t=temp.t;
    		D[temp.yuan].next=temp.next;
    	}
    	b=first;
    	while(1)
    	{
    		node m;
    		m.yuan=b;
    		m.t=D[b].t;
    		m.next=D[b].next;
    		ou.push_back(m);
    		if(D[b].next==-1){
    			break;
    		}
    		b=D[b].next; 
    	}
    	
    	for(int i=0;i<ou.size()/k;i++){
    		reverse(ou.begin()+i*k,ou.begin()+(i+1)*k);
    	}
    	for(int i=0;i<ou.size();i++){
    		if(i==ou.size()-1){
    			printf("%05d %d -1
    ",ou[i].yuan,ou[i].t);
    		}
    		else {
    			printf("%05d %d %05d
    ",ou[i].yuan,ou[i].t,ou[i+1].yuan);
    		}	
    	}
    	return 0;
    }
    
  • 相关阅读:
    mysql 历史版本下载
    mysql 5.7 版本 You must reset your password using ALTER USER statement before executing this statement报错处理
    5.7 zip 版本的安装 以及遇到的坑
    mysql 5.6zip版本的卸载与5.7 zip 版本的安装
    mysql数据库的备份与还原
    本地Navicat连接docker里的mysql
    docker修改数据库密码
    docker 在push镜像到本地registry出现的500 Internal Server Error
    linux 没有界面内容显示不全解决办法
    json与map互相转换
  • 原文地址:https://www.cnblogs.com/saber114567/p/9320078.html
Copyright © 2011-2022 走看看