| ||||||||||
| 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 | |||||||||
是不是malloc用得太多了?In Reply To:高手们帮我看看这程序为什么是access violation Posted by:winifreder at 2004-05-24 07:00:07 > #include<stdio.h>
> #include<malloc.h>
> #include<string.h>
> typedef struct node
> {
> char a[80];
> struct node *next;
> struct node *pre;
> }Node;
> Node *head,*p;
> /*function poiter int (*p[21])()
> visit()
> back()
> forward() flag
> */
>
>
> void visit()
> {
> Node *q;
> while(p->next!=NULL)
> {
> q=p->next;
> p->next=q->next;
> free(q);
> }
> q=(Node*)malloc(sizeof(Node));
> scanf("%s",q->a);
> q->pre=p;q->next=NULL;p->next=q;
> p=q;
> printf("%s\n",p->a);
> }
> void forward()
> {
> if(p->next==NULL)
> printf("Ignored\n");
> else
> {
> p=p->next;
> printf("%s\n",p->a);
> }
> }
> void back()
> {
> if(p->pre==NULL)
> printf("Ignored\n");
> else
> {
> p=p->pre;
> printf("%s\n",p->a);
> }
> }
> void quit()
> {
> Node *q;
>
> while(p->next!=NULL)
> {
> q=p->next;
> p->next=q->next;
> free(q);
> }
>
> while(p->pre!=NULL)
> {
> q=p->pre;
> p->pre=q->next;
> free(q);
> }
> free(p);
> }
>
> int main()
> {
> void (*fp[20])();
> char word[8];
> p=(Node*)malloc(sizeof(Node));
> strcpy(p->a,"http://www.acm.org/");
> head=p;
> p->next=p->pre=NULL;
> fp['V'-'B']=visit;
> fp['F'-'B']=forward;
> fp['B'-'B']=back;
> scanf("%s",word);
> while(word[0]!='Q')
> {
> (*fp[word[0]-'B'])();
> scanf("%s",word);
> }
> quit();
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator