PAT乙级 反转链表 (25)

只要能想到用map存储数据,基本就ok了,输出的时候注意一下,比如说0要输出成00000.

#include
#include
#include
using namespace std;
#define MAX_SIZE 100000
struct node{//类型节点定义
   int addr;//地址
   int data;//数据
   int next;//next值
};
node head[MAX_SIZE];
int main()
{
    int firstaddr,N,K;
    cin>>firstaddr>>N>>K;
    map  nodem;//以每个节点的地址值为关键字,以节点为value值
    for(int i=0;i>Node.addr>>Node.data>>Node.next;
      nodem.insert(make_pair(Node.addr,Node)); 
    }
    
    map ::iterator iter=nodem.find(firstaddr);
    int i=0;
     while(iter!=nodem.end()){//将节点依次放入顺序表中
         head[i]=iter->second;
         i++;
         firstaddr=iter->second.next;
         iter=nodem.find(firstaddr);
     }
    int begin=0;
    node temp;
    while(begin+K
还有一个就是,怎么也不过的答案.

#include "iostream"
#include "stdio.h"
#include "string"
#include "string.h"
#include "map"
using namespace std;

struct node
{
	int addr;
	int data;
	int next;
};
node head[100000];
node result[100000];

int main()
{
	int firsta,n,k;
	int i,j;
	int num;
	cin>>firsta>>n>>k;
	map nodegroup;

	for(i = 0;i < n;i++)
	{
		node Node;
		cin>>Node.addr>>Node.data>>Node.next;
		nodegroup.insert(make_pair(Node.addr,Node));
	}

	map::iterator iter = nodegroup.find(firsta);

	for(i=0;isecond;
		if(i!=n-1)
			iter = nodegroup.find(iter->second.next);
	}

	num = 0;
	for(i=0;(n-i)>=k;i+=k)
	{
		for(j=k-1;j>=0;j--)
		{
			result[num] = head[i+j];
			num++;
		}
	}

	for(;i



你可能感兴趣的:(数据结构算法学习)