1. 程式人生 > 其它 >資料結構之單鏈表操作

資料結構之單鏈表操作

資料結構,單鏈表操作,本來應該三年前就應該會的,奈何上學的時候呼呼睡大覺,最近看程式碼又接觸到了,花了幾天時間自己重新寫了一下
連結串列操作應該是基礎的,並且需要會的,雖然只是簡單地初始化,增加連結串列節點等簡單操作,但是考查了很重要的知識點,指標,結構體,形參實參,還有簡單的演算法

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

typedef struct List{
        struct List *next;
        int data;
}mylist;

void init_mylist
(mylist **list);//初始化連結串列 void add_mylist(mylist *list);//增加節點 void arry_mylist(mylist *list);//非遞減排序 void merge_mylist(mylist *list1,mylist *list2,mylist *list3);//連結串列合併 void printf_mylist(mylist *list);//列印連結串列 //主函式 int main(int argc, char *argv[]) { mylist *l1,*l2,*l3; srand(time(NULL)); init_mylist
(&l1); init_mylist(&l2); init_mylist(&l3); //printf("%d\n",l1->data); for(int i=0;i<5;i++) { add_mylist(l1); add_mylist(l2); } printf_mylist(l1); printf_mylist(l2); arry_mylist
(l1); arry_mylist(l2); printf_mylist(l1); printf_mylist(l2); merge_mylist(l1,l2,l3); printf_mylist(l3); return 0; } void init_mylist(mylist **list) { mylist *l; l = malloc(sizeof(mylist));//頭結點 l->data = 1;//頭結點資料區,儲存資料節點數 l->next = NULL; *list = l; } void add_mylist(mylist *list) { mylist *l = list; mylist *li; li = malloc(sizeof(mylist)); li->data = rand()%30;//隨機數 li->next = NULL; while(l->next) { l = l->next; } l->next = li; list->data = list->data +1;//節點數加一 } void printf_mylist(mylist *list) { mylist *l = list; while(l) { printf("%d\t",l->data);//列印在一行,水平製表符間隔 l = l->next; } printf("\n");//換行 } void arry_mylist(mylist *list) { mylist *l = list->next; mylist *l1; int a; while(l->next) { l1 = l->next; while(l1) { if(l->data >= l1->data)//這個我只是用簡單地用元素交換方法 { a = l->data; l->data = l1->data; l1->data = a; } l1 = l1->next; } l = l->next; } } void merge_mylist(mylist *list1,mylist *list2,mylist *list3) { mylist *l1 = list1->next; mylist *l2 = list2->next; mylist *l3 = list3; while(l1 && l2) { if(l1->data < l2->data) { l3->next = l1; l1 = l1->next; }else{ l3->next = l2; l2 = l2->next; } l3 = l3->next; } if(l1) { l3->next = l1; }else{ l3->next = l2; } list3->data = list1->data + list2->data - 1;//計算總節點數 }

編譯和執行結果
在這裡插入圖片描述
我這也算是在補課吧