链表动态创建之头尾插法

    科技2022-08-21  107

    实现代码:

    #include <stdio.h> #include <stdlib.h> struct Test { int data; struct Test *next; }; int printLink(struct Test *head) { struct Test *point; point = head; while(point != NULL) { printf("%d ",point->data); point = point->next; } putchar('\n'); } struct Test* insertFromHead(struct Test *head,struct Test *new) { if(head == NULL) { head = new; } else { new->next = head; head = new; } return head; } struct Test* insertBehind(struct Test *head,struct Test *new) { struct Test *p = head; if(p == NULL) { head=new; return head; } while(p->next != NULL) { p = p->next; } p->next = new; return head; } struct Test *createLink(struct Test *head) { struct Test *new; while(1) { new = (struct Test *)malloc(sizeof(struct Test)); printf("input your new node data:\n"); scanf("%d",&new->data); if(new->data == 0){ printf("0 quit\n"); return head; } head = insertFromHead(head,new); } } struct Test *createLink2(struct Test *head) { struct Test *new; while(1) { new = (struct Test *)malloc(sizeof(struct Test)); printf("input your new node data:\n"); scanf("%d",&new->data); if(new->data == 0){ printf("0 quit\n"); return head; } head = insertBehind(head,new); } } int main() { struct Test *head = NULL; head = createLink(head); printLink(head); struct Test t1 = {1000,NULL}; head = insertFromHead(head,&t1); printLink(head); struct Test t2 = {2000,NULL}; head = insertBehind(head,&t2); printLink(head); return 0; }
    Processed: 0.018, SQL: 9