• 反转链表


    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;
    }
    
  • 相关阅读:
    水晶苍蝇拍:微薄投资感悟摘录(四) (2012-04-03 14:11:01)
    水晶苍蝇拍:投资感悟(三)(手打,有删减)
    水晶苍蝇拍:投资感悟(二)(2011-12-27 08:17:54)
    leetcode -- String to Integer (atoi)
    leetcode -- Longest Palindromic Substring
    leetcode -- Longest Substring Without Repeating Characters
    leetcode -- Add Two Numbers
    QQ截图工具截取
    LUA学习笔记(第5-6章)
    Lua5.2 请求 luasocket 相关模块时的 multiple-lua-vms-detected
  • 原文地址:https://www.cnblogs.com/saber114567/p/9320078.html
Copyright © 2020-2023  润新知