| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:这道题用链表会很慢吗?麻烦大家进来看下In Reply To:这道题用链表会很慢吗?麻烦大家进来看下 Posted by:dengd at 2010-02-06 16:48:10 不会啊~~600+ms
#include<stdlib.h>
#include<stdio.h>
typedef struct CLIENT{
int K;
int P;
struct CLIENT *next;
struct CLIENT *prior;
}CLIENT,*CLinkList;
CLinkList head;
void load(){
head=(CLinkList)malloc(sizeof(CLIENT));
head->next=head;
head->prior=head;
}
void AddNode(){
CLinkList newbase=(CLinkList)malloc(sizeof(CLIENT));
scanf("%d%d",&newbase->K,&newbase->P);
CLinkList reHead=head->next;
while(reHead!=head){
if(reHead->P>newbase->P)
break;
reHead=reHead->next;
}
reHead->prior->next=newbase;
newbase->prior=reHead->prior;
newbase->next=reHead;
reHead->prior=newbase;
}
void printMax(){
if(head->next==head){
printf("0\n");
return;
}
CLinkList del=head->prior;
printf("%d\n",del->K);
del->prior->next=del->next;
del->next->prior=del->prior;
free(del);
}
void printMin(){
if(head->next==head){
printf("0\n");
return;
}
CLinkList del=head->next;
printf("%d\n",del->K);
del->prior->next=del->next;
del->next->prior=del->prior;
free(del);
}
void solve(){
int code;
while(scanf("%d",&code)&&code){
switch(code){
case 1:AddNode();break;
case 2:printMax();break;
case 3:printMin();break;
default:
break;
}
}
}
int main(){
load();
solve();
return EXIT_SUCCESS;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator