當前位置:成語大全網 - 書法字典 - c語言鏈表排序

c語言鏈表排序

#包含“stdafx.h“

#包含《stdlib.h》

//創建壹個以數據為值並指向NULL的節點。

node * Create(int value ){

Node * head =(Node *)malloc(sizeof(Node));

head-》data = value;

head-》next = NULL;

returnhead

}

//銷毀鏈表

bool destroy _ List(Node * head ){

節點*溫度;

while(頭)

temp = head-》next;

免費(頭);

head = temp

}

head = NULL

returntrue

}

//在表後添加壹個節點,創建(值)

boolapend(Node * head,int value ){

Node*n=Create(值);

Node * temp = head

while(temp-》next ){

temp = temp-》next;

}

temp-》next = n;

return0

}

//打印鏈接列表

void print _ List(Node * head ){

node * temp = head-》next;

當(溫度){

printf(“% d-》“,temp-》data);

temp = temp-》next;

}

printf(" \ n ");

}

//在鏈表中的定位節點(第壹個節點為0)後插入創建的節點Create(value)。

boolInsert _ List(Node * head,intlocate,int value ){

Node * temp = head

node * p;

Node*n=Create(值);

如果(定位《0)

returnfalse

while(locate-){

if(temp-》next = = NULL ){

temp-》next = Create(value);

returntrue

}

temp = temp-》next;

}

p = temp-》next;

temp-》next = n;

n-》next = p;

returntrue

}

//刪除定位節點之後的節點(第壹個節點為0)

bool delete _ List(Node * head,int locate ){

Node * temp = head

node * p;

如果(定位《0)

returnfalse

while(locate-){

if(temp = = NULL ){

returnfalse

}

temp = temp-》next;

}

p = temp-》next-》next;

free(temp-》next);

temp-》next = NULL;

temp-》next = p;

returntrue

}

//獲取鏈表的長度(不包括頭節點)

int size _ List(Node * head ){

Node * temp = head

int size = 0;

while(temp-》next ){

temp = temp-》next;

size++;

}

returnsize

}

//三種類型的鏈表(選擇、插入和冒泡)

boolSort _ List(Node * head ){

intt = 0;

int Size = Size _ List(head);

//選擇排序

/* for(Node * temp = head-》next;臨時的!= NULLtemp = temp-》next ){

for(Node * p = temp;p!= NULLp = p-》next ){

if(溫度-》數據》p-》數據){

printf(“change % d and % d \ n“,temp-》data,p-》data);

t = temp-》data;

temp-》data = p-》data;

p-》data = t;

}

}

}*/

//插入排序

/* for(Node * temp = head-》next-》next;臨時的!= NULLtemp = temp-》next ){

for(Node * p = head;p-》下壹個!= NULLp = p-》next ){

if(p-》next-》data》temp-》data)

{

printf(“change % d and % d \ n“,temp-》data,p-》next-》data);

t = temp-》data;

temp-》data = p-》next-》data;

p-》next-》data = t;

}

}

}*/

//冒泡排序

for(Node * temp = head-》next;臨時-》下壹個!= NULLtemp = temp-》next ){

for(Node * p = head-》next;p-》下壹個!= NULLp = p-》next ){

if(p-》數據》p-》下壹個-》數據){

t=p-》數據;

p-》data = p-》next-》data;

p-》next-》data = t;

}

}

}

return0

}

擴展數據:

Return的意思是將程序流程從被調用的函數轉向主音函數,並將表達式的值帶回主音函數,以實現函數值的返回,返回值可以伴隨返回值,返回值由return後的參數指定。

Return通常是必要的,因為調用函數時計算結果通常由返回值帶出。如果函數執行不需要返回計算結果,往往需要返回壹個狀態碼來表示函數執行是否順利(-1和0是最常用的狀態碼),主調優函數可以通過返回值來判斷調優函數的執行情況。