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;
    }
    
  • 相关阅读:
    [Tensorflow2.0] 入门
    重新开始深度学习
    大秦小记三
    大秦小记二
    大秦小记一
    大秦小记初始篇
    js事件高级
    jsDOM
    css样式
    c#压缩文件和批量压缩文件
  • 原文地址:https://www.cnblogs.com/saber114567/p/9320078.html
Copyright © 2011-2022 走看看