Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:这道题用链表会很慢吗?麻烦大家进来看下

Posted by 200831000423 at 2010-06-27 18:48:35 on Problem 3481
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator