You are on page 1of 3

Cc thao tc trn danh sch lin kt n(single-link list)

//1.nh ngha tng qut


struct tq { thtin_t phantu; struc tq*tiep; }; typedef struct tq tq_t;

//2.Con tr ti 1 node
struct

node { int infor; struct node *next;

}; typedef struct node *NODEPTR;

//3.Cp pht b nh cho 1 node

NODEPTR Getnode(void) { NODEPTR p; P = (NODEPTR) malloc(sizeof( struct node)); Return(p); }

//4.Gii phng 1 node


NODEPTR Freenode( NODEPTR p){ free(p); }

//5.Thm phn t vo nh danh sch

void Push_Top( NODEPTR *plist, int x) { NODEPTR p; p= Getnode(); p -> infor = x; p ->next = *plist; *plist = p; }

//6.Thm node mi vo cui danh sch

void Push_Bottom( NODEPTR *plist, int x) { NODEPTR p, q; p= Getnode(); // p->infor = x; q = *plist; while (q-> next != NULL) q = q -> next; q -> next = p; p ->next = NULL; }

//7.Thm node mi vo gia danh sch


void Push_Before( NODEPTR p, int x ){ NODEPTR q; if (p->next==NULL) Push_Bottom(p, x); else { q= Getnode(); q -> infor = x; q-> next = p-> next; p->next = q; } }

//8.Xa 1 node u danh sch

void Del_Top( NODEPTR *plist) { NODEPTR p; p = *plist; if (p==NULL) return; (*plist) = (*plist) -> next; p-> next = NULL; Freenode(p); }

//9.Xa node cui danh sch


void Del_Bottom(NODEPTR *plist) { NODEPTR p, q; if (*plist==NULL) return; else if ( (*plist)->next==NULL)) Del_Top(plist); else { p = *plist; while (p->next!=NULL){ q = p; p = p->next; } // p l node cui danh sch; q->next =NULL; Freenode(p); } }

//10.Xa node gia danh sch

void Del_before(NODEPTR p){ NODEPTR q; if (p->next==NULL) return; q = p ->next; p->next = q->next; Freenode(q); }

You might also like