| ||||||||||
| 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 | |||||||||
用链表一目了然这一题很适合用链表啊,按照题目的方法能实现,但是有些绕,贴上我的代码.
(好几次WA,因为我把Ignored写成了ignored.希望以后的acm题都能忽略大小写,不然无谓的浪费时间.)
#include<stdio.h>
struct footprint{
char view[180];
struct footprint *next;
struct footprint *prev;
};
struct footprint *root;
struct footprint *at;
void insert(struct footprint *fprint){
fprint->next = NULL;
fprint->prev = at;
at->next = fprint;
}
int main(void){
root = malloc(sizeof(struct footprint));
strcpy(root->view, "http://www.acm.org/");
root->next = root->prev = 0;
at = root;
char cmd[8];
char *msg = "";
while(1){
scanf("%s", cmd);
if(strcmp(cmd, "QUIT") == 0) return 0;
else if(strcmp(cmd, "BACK") == 0){
if(at == root) msg = "Ignored";
else{
at = at->prev;
msg = at->view;
}
}
else if(strcmp(cmd, "FORWARD") == 0){
if(at->next == NULL) msg = "Ignored";
else{
at = at->next;
msg = at->view;
}
}
else if(strcmp(cmd, "VISIT") == 0){
struct footprint * fp = malloc(sizeof(struct footprint));
scanf("%s", fp->view);
insert(fp);
at = fp;
msg = at->view;
}
else msg = "Ignored";
printf("%s\n", msg);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator