#include<stdio.h> #include<stdlib.h> typedef struct list /* 宣告鏈結串列結構 */ { int data; /* 資料欄位 */ struct list *link; /* 指標欄位 */ }node; node *Z=NULL; void print_list(node *); node *create_list(int *、int); void free_list(node *); void concatenate(node *、node *); void main( ) { node *X=NULL、*Y=NULL; int array1[6]={ 1、3、5、7、9、11 }; int array2[6]={ 2、4、6、8、10、12 }; X=create_list(array1、6); /* 建立鏈結串列X */ Y=create_list(array2、6); /* 建立鏈結串列Y */ printf("原來的鏈結串列X:\n"); print_list(X); printf("原來的鏈結串列Y:\n"); print_list(Y); concatenate(X、Y); /* 將鏈結串列X,Y合併成Z */ printf("合併後的鏈結串列Z:\n"); print_list(Z); free_list(Z); } void print_list(node *head) /* 印出鏈結串列的內容 */ { node *ptr; /* 走訪鏈結串列所用的指標 */ for(ptr=head; ptr!=NULL; ptr=ptr->link) printf("[%d]"、ptr->data); /* 印出鏈結串列節點內容 */ printf("\n"); /* 換行 */ } node *create_list(int *array、int len) /* 依陣列架構出鏈結串列 */ { node *head; /* 鏈結串列的起始指標 */ node *pre_node; /* 新節點之前節點的指標 */ node *new_node; /* 新節點的指標 */ int i; for(i=0; i<len; i++) { new_node=(node *)malloc(sizeof(node)); /* 配置記憶體空間給新節點 */ if(new_node == NULL) { printf("記憶體配置失敗!\n"); exit(1); /* 立刻結束程式 */ } new_node->data=array; /* 將陣列內容置入鏈結串列中 */ if(i == 0) /* 當第一次放入時,將head指標指向第一個節點 */ { new_node->link=NULL; head=new_node; } else /* 先走訪至最後一個節點,再加入新的節點 */ { for(pre_node=head; pre_node->link!=NULL; pre_node=pre_node->link); new_node->link=pre_node->link; pre_node->link=new_node; } } return head; /* 將改變過後的鏈結串列傳回 */ } void free_list(node *head) /* 將整個鏈結串列的記憶體歸還 */ { node *free_node; while(head != NULL) { free_node=head; head=head->link; free(free_node); } } void concatenate(node *X、node *Y) { node *ptr; if(X == NULL) /* 若X為空串列,則將Y的位址傳回 */ Z=Y; else if(Y == NULL) /* 若Y為空串列,則將X的位址傳回 */ Z=X; else { /* 走訪至尾端節點 */ for(ptr=X、Z=X; ptr->link!=NULL; ptr=ptr->link); /* 將鏈結串列X的尾端節點指向鏈結串列Y的開始節點 */ ptr->link=Y; } }
使用道具 舉報
本版積分規則 發表回復 回帖後跳轉到最後一頁
本論壇為非營利之網路平台,所有文章內容均為網友自行發表,不代表論壇立場!若涉及侵權、違法等情事,請告知版主處理。
廣告刊登 | 交換連結 | 贊助我們 | 服務條款 | 免責聲明 | 客服中心 | 中央分站
手機版|中央論壇
GMT+8, 2026-6-25 13:49 , Processed in 0.048499 second(s), 16 queries .
Powered by Discuz!
© 2005-2015 Copyrights. Set by YIDAS