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一直都是RE,我开始以为是因为网址太长,导致越界,就把字符数组的容量开到1000,但也是RE,就没想明白了,求各位大大解释,代码如下: typedef char* ElementType_Stack; #include <stdio.h> #include <stdlib.h> #include <string.h> /*Header Used*/ #ifndef STDIO #define STDIO 1 #include <stdio.h> #endif #ifndef STDLIB #define STDLIB 1 #include <stdlib.h> #endif #define STACK 1 struct stack_tag; typedef struct stack_tag * PtrToStackTag; typedef PtrToStackTag stack; typedef PtrToStackTag Position_Stack; struct stack_tag { ElementType_Stack data; stack next; }; stack NewStack(void) { stack header; header = (stack)malloc(sizeof(struct stack_tag)); if(header == NULL){ return header; }else{ header->next == NULL; return header; } } int IsEmpty(stack S) { return (S->next == NULL); } ElementType_Stack pop(stack S) { ElementType_Stack x; Position_Stack tmp; x = S->next->data; tmp = S->next; S->next = tmp->next; free(tmp); return x; } ElementType_Stack top(stack S) { return S->next->data; } void push(ElementType_Stack x,stack S) { Position_Stack tmp; tmp = (stack)malloc(sizeof(struct stack_tag)); tmp->data = x; tmp->next = S->next; S->next = tmp; } void delete(stack S) { Position_Stack p = S->next; while(S->next != NULL){ free(S); S = p; p = S->next; } free(S); } void MakeEmpty(stack S) { while(!IsEmpty(S)){ pop(S); } } char home[] = "http://www.acm.org/"; int main() { stack forward,backward; char *cur,order[] = "FORWARD"; // FILE *in; // in = fopen("input.c","r"); forward = NewStack(); backward = NewStack(); cur = (char *)malloc(sizeof(char) * 101); strcpy(cur,home); while(scanf("%s",order) && strcmp(order,"QUIT") != 0){ if(strcmp(order,"FORWARD") == 0){ push(cur,backward); if(IsEmpty(forward)){ printf("Ignored\n"); }else{ cur = pop(forward); printf("%s\n",cur); } }else if(strcmp(order,"BACK") == 0){ if(IsEmpty(backward)){ printf("Ignored\n"); }else{ push(cur,forward); cur = pop(backward); printf("%s\n",cur); } }else{ push(cur,backward); cur = (char *)malloc(sizeof(char) * 101); scanf("%s",cur); printf("%s\n",cur); MakeEmpty(forward); } } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator