You are on page 1of 4

Bản sao của FULL SORT Single LINK LIST (Improved Ver)-CTDLGTH

//KHAI BAO DANH SACH LIEN KET DON:

typedef struct{

char ten[30];

int ma;

float diem;

}Data;

typedef struct{

Data infor;

struct tagNode *link;

}Node;

typedef struct{

Node *pH;

Node *pT;

int spt;

}LList;

//SAP XEP

void swap(data &a,data &b){

data temp;

temp = a;

a = b;

b = temp;

}//Func. doi cho

Node *pre(LList L,Node *pp){


if(pp == L.pH) return NULL;//pp nam dau thi khong lam gi het, boi khong co phan tu nao truoc no
de lui

Node *q = L.pH;//Tao node q gan o dau

while(q->link!=pp)//Khi phan tu sau q = pp, vong lap se dung. Luc do q se dung truoc pp

q = q->link;

return q;

//Thuat toan giong 100% tren mang, ae dich sang, nhung co vai diem khac:

void selection_sort(LList L){

Node *i,*j,*vtmin;

for(i = L.pH;i->link!=NULL;i=i->link){

// i = 0 i< n i++

vtmin = i;

for(j=i->link;j!=NULL;j=j->link){

// j=i j < n j++

if(j->infor.diem < vtmin->infor.diem)

vtmin = j;

if(vtmin != i)

swap(vtmin->infor,i->infor);

void interchange_sort(LList L){

Node *i,*j;

for(i=L.pH;i->link!=NULL;i=i->link){

for(j=i->link;j!=NULL;j=j->link){
if(i->infor.diem > j->infor.diem)

swap(i->infor,j->infor);

void insertion_sort(LList L){

Node *i,*pos;

Data x;

for(i=L.pH->link;i!=NULL;i=i->link){

x = i->infor;

pos = i;

while(pos!=L.pH && pre(L,pos)->infor.diem >x.diem){

pos->infor = pre(L,pos)->infor;

pos = pre(L,pos);

pos->infor = x;

void bubble_sort(LList L){

for(Node *i=L.pH;i->link!=NULL;i=i->link){

for(Node *j=L.pT;j!=i;j = pre(L,j)){

if(j->infor.diem<pre(L,j)->infor.diem)

swap(j->infor,pre(L,j)->infor);

}
}

You might also like