⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 insert.c

📁 The soruce code of simple SMTP client for linux
💻 C
字号:
/***  test inserting a node at the beginning of the list. print the result**  and then free the memory. a user defined function is called to free**  the data.****  Development History:**      who                  when           why**      ma_muquit@fccc.edu   Aug-09-1998    first cut*/#include <sll.h>#include <string.h>typedef struct _addr{    char        *name,        *city,        *state;} Addr;static void freeData(void **data);int main (int argc,char **argv) {    Sll        *l,        *head=NULL,        *new=NULL;    Addr        *addr;    int        n=0;    (void) fprintf(stderr,"=========================================================================\n");    (void) fprintf(stderr," Testing Insert a node at the beginning of a list\n");    (void) fprintf(stderr,"=========================================================================\n");    addr=(Addr *) malloc(sizeof(Addr));    if (addr == NULL)    {        (void) fprintf(stderr," malloc failed\n");        exit(-1);    }    /*    ** it will be the last node    */    addr->name=strdup("Muhammad A Muquit");    addr->city=strdup("Philadelphia");    addr->state=strdup("PA");    if ((addr->name == NULL) ||        (addr->city == NULL) ||        (addr->state == NULL))    {        (void) fprintf(stderr,"malloc failed\n");        exit(-1);    }    new=allocateNode((void *) addr);    insertNode(&head,&new);    (void) fprintf(stderr,"Inserting Node: %d\n", ++n);    (void) fprintf(stderr,"  %s\n",addr->name);    (void) fprintf(stderr,"  %s\n",addr->city);    (void) fprintf(stderr,"  %s\n",addr->state);    /*    ** insert node before the last one    */    addr=(Addr *) malloc(sizeof(Addr));    if (addr == NULL)    {        (void) fprintf(stderr," malloc failed\n");        exit(-1);    }    addr->name=strdup("Janet Hunter");    addr->city=strdup("Santa Clara");    addr->state=strdup("CA");    if ((addr->name == NULL) ||        (addr->city == NULL) ||        (addr->state == NULL))    {        (void) fprintf(stderr,"malloc failed\n");        exit(-1);    }       new=allocateNode((void *) addr);    insertNode(&head,&new);    (void) fprintf(stderr,"Inserting Node: %d\n", ++n);    (void) fprintf(stderr,"  %s\n",addr->name);    (void) fprintf(stderr,"  %s\n",addr->city);    (void) fprintf(stderr,"  %s\n",addr->state);    /*    ** insert node before the last one    */    addr=(Addr *) malloc(sizeof(Addr));    if (addr == NULL)    {        (void) fprintf(stderr," malloc failed\n");        exit(-1);    }    addr->name=strdup("Babs Jensen");    addr->city=strdup("Cupertino");    addr->state=strdup("CA");    if ((addr->name == NULL) ||        (addr->city == NULL) ||        (addr->state == NULL))    {        (void) fprintf(stderr,"malloc failed\n");        exit(-1);    }       new=allocateNode((void *) addr);    insertNode(&head,&new);    (void) fprintf(stderr,"Inserting Node: %d\n", ++n);    (void) fprintf(stderr,"  %s\n",addr->name);    (void) fprintf(stderr,"  %s\n",addr->city);    (void) fprintf(stderr,"  %s\n",addr->state);    /*    ** print    */    (void) fprintf(stderr,"\n\nPrinting........\n");    n=0;    for (l=head; l; l=l->next)    {        addr=(Addr *) l->data;        (void) fprintf(stderr,"Node: %d\n",++n);        (void) fprintf(stderr,"  %s\n",addr->name);        (void) fprintf(stderr,"  %s\n",addr->city);        (void) fprintf(stderr,"  %s\n\n",addr->state);    }    /*    ** free nodes    */    destroyNodes(&head,freeData);    exit(0);}/*** routine to free the user data*/static void freeData(void **data){    Addr        **addr=(Addr **) data;    static int        n=0;    n++;    if (*addr)    {        if ((*addr)->name)        {            (void) fprintf(stderr," Freeing: %s\n",(*addr)->name);            (void) free((char *) (*addr)->name);        }        if ((*addr)->city)        {            (void) fprintf(stderr," Freeing: %s\n",(*addr)->city);            (void) free ((char *) (*addr)->city);        }        if ((*addr)->state)        {            (void) fprintf(stderr," Freeing: %s\n",(*addr)->state);            (void) free ((char *) (*addr)->state);        }        (void) fprintf(stderr,"Freeing the node %d itself\n\n",n);        (void) free((char *) (*addr));        (*addr)=NULL;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -