Tải bản đầy đủ (.ppt) (1 trang)

danh sach lien ket don

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (27.17 KB, 1 trang )


#include<stdio.h>

#include<conio.h>

#include<ctype.h>

#include<string.h>

typedef struct SINHVIEN

{ char ten[20];

int msv;

}SV;

typedef struct SinhvienNode

{

SV Info;

SinhvienNode *pNext;

}SVNode;

typedef struct SinhvienList

{


SinhvienNode *pHead;

SinhvienNode *pTail;

}LIST;

void makenull(LIST*L)

{

L->pHead=L->pTail=NULL;

}

void nhapsv(SV *x);

void nhapds(LIST *L)

{ SV x; SinhvienNode *p;

char tl;

do {p=new SinhvienNode;

p->pNext=NULL;

nhapsv(&x);

strcpy(p->Info.ten,x.ten);


p->Info.msv=x.msv;

if(L->pTail==NULL)

{

L->pHead=p;

L->pTail=p;

}

else

{

L->pTail->pNext=p;

L->pTail=p;

}

printf("\nban co tiep tuc khong(c/k)?");

tl=getch();tl=toupper(tl);

}while(tl=='C');

}


void nhapsv(SV *x)

{ int ma;

printf("\nnhapSV X\n");

printf("hoten: ");gets(x->ten);

printf("ma:");scanf("%d",&ma);

x->msv=ma;

fflush(stdin);

}

void hienthids(LIST L)

{ SinhvienNode *p;

p=L.pHead;int i=0;

while(p!=NULL)

{

printf("\n%3d %-20s %3d",++i,p->Info.ten,p->Info.msv);

p=p->pNext;


}

}

void AddTail(LIST *L,SV x)

{ SinhvienNode *p;p=new SinhvienNode;

p->pNext=NULL;

p->Info=x;

if(L->pHead==NULL)

L->pHead=L->pTail=p;

else

{//1 noi duoi cua pTail vao p

L->pTail->pNext=p;

//2 chuyen pTail ve p

L->pTail=p;

}

}


void AddHead(LIST *L,SV x)

{ SinhvienNode *p;p=new SinhvienNode;

p->pNext=NULL;

p->Info=x;

if(L->pHead==NULL)

L->pHead=L->pTail=p;

else

{//1 noi duoi cua pTail vao p

p->pNext=L->pHead;

//2 chuyen pTail ve p

L->pHead=p;

}

}

void InsertAfter(LIST *L,SinhvienNode *q,SV x)

{


SinhvienNode *p;

p=new SinhvienNode;p->Info=x;

p->pNext=NULL;

if(q==NULL)

{

if(L->pTail==NULL)

{

L->pTail=L->pHead=p;

}

else{

L->pTail->pNext=p;

L->pTail=p;

}

}

else{//tim thay nut co ma n vao


//co ma = ma

p->pNext=q->pNext; //chen vao L phan tu co

//Infor la x sau q neu khong

//phai thi chen vao duoi danh sach

q->pNext=p;

}

}

SinhvienNode *findNode(LIST L,int ma)

{

SinhvienNode *p;

p=L.pHead;

while(p!=NULL)

if(p->Info.msv==ma)

break;

else


p=p->pNext;

return(p);

}

void main()

{

LIST L; SV x; int ma;

makenull(&L); SinhvienNode *q;

nhapds(&L);

hienthids(L);

nhapsv(&x);

printf("\nnhap ma cua q:");scanf("%d",&ma);

q=findNode(L,ma); //tra lai dia chi cua nut

InsertAfter(&L,q,x);

hienthids(L);

/*nhapsv(&x);


AddTail(&L,x);

hienthids(L);nhapsv(&x);

AddHead(&L,x);

hienthids(L);nhapsv(&x);

printf("\n nhap ma sv q:");scanf("%d",&ma);

AddAfter(&q,ma,x);

*/

getch();

}

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×