# include <stdio.h>
# include <stdlib.h>
# define MAX (16)
   
   
 struct Link
 {
int data;
struct Link *Lnext;
  }Linklist =
    {EOF,NULL};
  
  /* 関数プロトタイプ */
  struct Link *add(struct Link *p, int data);
  struct Link *add2(struct Link Linklist, int data);
  struct Link *install(int data);
  struct Link *insert(struct Link *p, int data);
  int print_data(struct Link *p);
  
  int main(void)
  {
    char line[MAX] ;      /* バッファ */
    int  >
    int  noe  = 0;
    struct Link *p;
  
    while(1){/*ループ(データが入力されれば) */
      printf("enter data: ");
      if (*gets(line) == '') /* バッファに読み込む *//* printf("DEBUG:line[%s]n",line); */
        break;          /* 復改ならループから抜ける*/
      
  
      add(&Linklist, data); /* 末尾にリスト要素を1つ作成 */
      /* 要素のデータ成分にバッファ内のデータを書き込む */
    }
  
    printf("SHOW ALL n");
      printf("                             p  p->Lnextn");
    for(p = Linklist.Lnext; p != NULL; p=p->Lnext){
      printf("Linklist:(data)%d:(address)[%d][%d]n",p->data,p,p->Lnext);
    }
  
    insert(&Linklist, 0);
    printf("AFTER INSERTION n");
      for(p = Linklist.Lnext; p != NULL; p=p->Lnext){
      printf("Linklist:(data)%d:(address)[%d][%d]n",p->data,p,p->Lnext);
      }
  
  
  
  }
  
  
  struct Link *add(struct Link *p, int data)
  {
    while(p->Lnext!= NULL){    /* 最後の構造体を探す */
      p = p->Lnext;  /*  */
    } 
    p->Lnext = install(data);
    return (p->Lnext);
  }
  
  struct Link *insert(struct Link *p, int data)
  {
    struct Link *np = (struct Link*)malloc(sizeof(struct Link)); 66:    np-> 
    np->Lnext = p->Lnext;
    p->Lnext  = np;
  
    return np;
  }
  
    /*
     *struct Link *nstall(int data)
     *-構造体の領域を確保し、field "data" に値を代入する。
     *-構造体のアドレスを返す。
     *
     */
  struct Link *install(int data)
  {
    struct Link *np;
    np = (struct Link*)malloc(sizeof(struct Link)); 83:    np-> 
    np->Lnext = NULL;
    return (np);
  }