回顧:上篇寫了鍊錶的建立,刪除,頭插法,頭刪法,元素查詢,鍊錶輸出等基本實現。尾插法和頭插法不一樣的地方在於需要迴圈遍歷到尾部。
//鍊錶逆序
void reverselinklist(linknode& head)
}free(head);
head=newhead;
}//鍊錶拼接,一條鍊錶的尾端接上另一條鍊錶的第乙個資料域。
void joinlinklist(linknode ahead,linknode bhead,linknode& newhead)
h->next=bhead->next;
newhead->data=ahead->data+bhead->data;
}以下提供兩種鍊錶排序方法,一種是插入排序,涉及到鍊錶結點的插入,一種是選擇排序,只操作鍊錶的元素域。
//鍊錶排序(插入排序)
void sortlinklistinset(linknode& head)
k=k->next;
}if(k==l)}}
//鍊錶排序(選擇排序)
void sortlinklistselect(linknode& head)
k=k->next;
}element temp=l->data;
l->data=min->data;
min->data=temp;
l=l->next;}}
//有序鍊錶合併
void mergelinklist(linknode ahead,linknode bhead,linknode& newhead)
else
}while(lb)
while(la)
}main函式測試:
insertnode(lb,2);
insertnode(lb,13);
insertnode(lb,1);
insertnode(lb,16);
insertnode(lb,12);
//joinlinklist(head,lb,lc); //謹慎測試,因為lc這個鍊錶只有頭結點,其餘下的結點都是參照前兩條鍊錶的
sortlinklistselect(lb);
sortlinklistselect(head);
mergelinklist(head,lb,lc);
printlinklist(lc);
reverselinklist(lc);
printlinklist(lc);
資料結構 鍊錶及常見操作
鍊錶最常見的結構有單鏈表,雙鏈表和迴圈鍊錶 單鏈表只有乙個方向,結點只需要乙個額外的空間指向後面的結點,只能從前往後進行遍歷查詢資料 而雙向鍊錶可以向前和向後查詢資料,相對比較靈活,但是雙向鍊錶需要額外的兩個空間來儲存後繼結點和前驅結點的位址 儲存同樣多的資料,雙向鍊錶需要比單鏈表占用更多的空間。1...
資料結構之鍊錶操作
線性表鏈式儲存結構定義 為了表示每個資料元素ai與其後繼資料元素ai 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身資訊外,還需儲存乙個指示其直接後繼的資訊。我們把儲存資料元素的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱為指標或鏈。這兩部分資訊組成資料元素ai的儲存影...
資料結構之鍊錶操作
1 基本概念 鏈式儲存結構不需要用位址連續的儲存單元來實現,而是通過 鏈 建立起資料元素之間的順序關係,因此它不要求兩個在邏輯上相鄰的資料元素在物理邏輯上也相鄰。從而,在插入和刪除元素的時候,不需要對原來的資料元素進行移動,只需要改變鍊錶節點之間的指向關係即可,從而提公升了執行時效率。2 主要儲存結...