利用頭插法建立一個單向連結串列以及連結串列的逆置
阿新 • • 發佈:2019-02-09
#include<stdio.h> #include<stdlib.h> #define N 10 //定義結構體單元 typedef struct node{ int data;//結構體資料域 struct node* next;//結構體指標域 }ElemSN; //逆向建立單向連結串列(頭插法) ElemSN *PreCreatLink(int a[],int n) { ElemSN *head=NULL,*p; for(int i=n-1;i>-1;i--) { p=(ElemSN*)malloc(sizeof(ElemSN)); p->data=a[i]; p->next=head; head=p; } return head; } //將一個單向連結串列逆質 ElemSN* PreLink(ElemSN *head) { ElemSN *p,*head1=NULL; while(head) { p=head; head=head->next; p->next=head1; head1=p; } return head1; } //列印連結串列所有結點的值 void PrintLink(ElemSN* head) { ElemSN *p=head; for(;p;p=p->next) printf("%5d",p->data); } int main(void) { ElemSN *head; int a[N]={1,2,3,4,5,6,7,8,9,10}; head=PreCreatLink(a,N); //頭插法建立連結串列 PrintLink(head); //列印連結串列結點的值 printf("\n"); head=PreLink(head); //逆置一個連結串列 PrintLink(head); //列印連結串列結點的值 }
執行結果如下: