PAT L2-002. 鏈表去重

傳送門: https://www.patest.cn/contests/gplt/L2-002

給定一個帶整數鍵值的單鏈表L,本題要求你編寫程序,刪除那些鍵值的絕對值有重複的結點。即對任意鍵值K,只有鍵值或其絕對值等於K的第一個結點可以被保留。同時,所有被刪除的結點必須被保存在另外一個鏈表中。例如:另L爲21→-15→-15→-7→15,則你必須輸出去重後的鏈表21→-15→-7、以及被刪除的鏈表-15→15。

輸入格式:

輸入第一行包含鏈表第一個結點的地址、以及結點個數N(<= 105 的正整數)。結點地址是一個非負的5位整數,NULL指針用-1表示。

隨後N行,每行按下列格式給出一個結點的信息:

Address Key Next

其中Address是結點的地址,Key是絕對值不超過104的整數,Next是下一個結點的地址。

輸出格式:

首先輸出去重後的鏈表,然後輸出被刪除結點組成的鏈表。每個結點佔一行,按輸入的格式輸出。

輸入樣例:
00100 5
99999 -7 87654
23854 -15 00000
87654 15 -1
00000 -15 99999
00100 21 23854
輸出樣例:
00100 21 23854
23854 -15 99999
99999 -7 -1
00000 -15 87654
87654 15 -1

數據不大 可以結構體存儲 結構體的下標 就是他的地址
裏面存儲 2個信息 值data 和 下一個的地址next

將出現過的存入結構體數組a 中 沒有出現過得 存入結構體b中 , 分別輸出就好

code:

#include<iostream>  
#include<queue>  
#include<string>  
#include<memory.h>  
#include<math.h>  
#include<algorithm>  
#include<stdio.h>  
using namespace std;  
struct node1  
{  
    int data;  
    int next;  
} map[100005];  
int a[100005],b[100005];  
int vis[100005];  
int p,x,y,n,m;  
int init()  
{  
     for(int i=0; i<m; i++) //輸入  
    {  
        cin>>p>>x>>y;  
        map[p].data=x;  
        map[p].next=y;  
    }  
}  
int main()  
{  
    cin>>n>>m;  
    init();  
    memset(vis,0,sizeof(vis));  
    int temp=n,ka=0,kb=0;  
    while(temp!=-1)  
    {  
        int t=abs(map[temp].data);  
        if(vis[t]==0)//如果沒有出現  
        {  
            vis[t]=1;//標記爲1  
            a[ka++]=temp;//將地址存入數組a  
        }  
        else//出現  
            b[kb++]=temp;//將地址存入數組b  

        temp=map[temp].next;  
    }  
    printf("%05d %d ",a[0],map[a[0]].data);  
    for(int i=1;i<ka;i++)  
    {  
        printf("%05d\n",a[i]);  
        printf("%05d %d ",a[i],map[a[i]].data,map[a[i]].next);  
    }  
     cout<<-1<<endl;  
    if(kb>0)  
    {  
         printf("%05d %d ",b[0],map[b[0]].data);  
         for(int i=1;i<kb;i++)  
        {  
            printf("%05d\n",b[i]);  
            printf("%05d %d ",b[i],map[b[i]].data,map[b[i]].next);  
        }  
         cout<<-1<<endl;  
    }  

}  
發佈了268 篇原創文章 · 獲贊 296 · 訪問量 27萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章