單鏈表建立,逆序,刪除
阿新 • • 發佈:2019-02-17
#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct link{ int data; struct link *next; }node; int main() { int n,i,a[10]; node *p,*q,*c,*head=NULL; scanf("%d",&n); for(int i = 1; i <= n; i++)//建立連結串列 { p = (node*)malloc(sizeof(node));//分配空間 p->next = NULL;//將下一個節點為NULL,當最後一個節點完成,結束 scanf("%d",&p->data); if(head == NULL) head = p; else q->next = p;//圖一解釋 q = p; } //連結串列的逆序 p = head;//保住頭結點 q = p->next;//見圖二 while(q) { c = q->next; q->next = p; p = q; q = c; } head->next=NULL;//原來頭結點已經變成末尾,現在它的下一個為空 head=p;//p是逆序後的新頭結點,再次將head變為頭結點 while(head) { printf("%d",head->data); head=head->next; } head=p;//刪除 while(head)//見圖三 { q=head->next; free(head); head=q; } return 0; }