링크 생 성, 방출, 출력

/*
 **     :  (  、  ) 
*/

#include <stdio.h>

#define MAX 10
int DataNum = 1;
char DataName[MAX];
int i = 0;

 

//         
struct List{
 int dataNum;
 char dataName[MAX];
 struct List *Next;
};
typedef struct List Node;
typedef Node* Link;

 

//     
Link listCreate(Link Head){
 Link Pointer,New;
 Head = (Link)malloc(sizeof(Node));
 
 if(Head == NULL){
  printf("alloc failed!
"); }else{ Head->dataNum = DataNum; Head->Next = NULL; Pointer = Head; printf("please input your name:
"); scanf("%s",DataName); for(i=0;i<MAX;i++){ Head->dataName[i] = DataName[i]; } while(1){ DataNum++; New = (Link)malloc(sizeof(Node)); New->dataNum = DataNum; New->Next = NULL; printf("please input your name:
"); scanf("%s",DataName); if(DataName[0] == '0'){ break; } for(i=0;i<MAX;i++){ New->dataName[i] = DataName[i]; } Pointer->Next = New; // New Pointer = New; // Pointer } //end while } //end if return Head; } // void listFree(Link Head){ Link Pointer; while(Head){ Pointer = Head; Head = Head->Next; printf("Node %s has been released
",Pointer->dataName); free(Pointer); } } // void listPrint(Link Head){ Link Pointer; Pointer = Head; while(Pointer){ printf("the %dth Node's name is %s
",Pointer->dataNum,Pointer->dataName); Pointer = Pointer->Next; } } int main(int argc, char *argv[]) { Link Head; Head = listCreate(Head); if(Head){ listPrint(Head); listFree(Head); } return 0; }

좋은 웹페이지 즐겨찾기