>>463
Node* CreateNode(Node* src){
Node* ret = (Node*)malloc(sizeof(Node));
memcpy(ret, src, sizeof(Node));ret->next = NULL;
return ret;
}
Node* InsertNode(Node* dest, Node* src){
Node* temp;
if (dest == NULL){dest = (Node*)malloc(sizeof(Node));memcpy(dest, src, sizeof(Node));}
else if (dest->next == NULL){dest->next = (Node*)malloc(sizeof(Node));memcpy(dest->next, src, sizeof(Node));}
else if (!(strcmp(dest->next->name, src->name) < 0)){temp = (Node*)malloc(sizeof(Node));memcpy(temp, src, sizeof(Node));temp->next = dest->next;dest->next = temp;}
else /* strcmp(dest->next->name, src->name) < 0 */InsertNode(dest->next, src);
return dest;
}
void DisplayList(Node* root){Node* cur = root;while (cur != NULL){printf("name:%20s phone:%12s\n", cur->name, cur->phone);cur = cur->next;}}
void FreeList(Node* ptr){if (ptr->next != NULL) FreeList(ptr->next);free(ptr);}