QQQdslk_sv

Màu nền
Font chữ
Font size
Chiều cao dòng

#include <iostream>

#include <conio.h>

#include <string.h>

#include <stdlib.h>

#include <stdio.h>

using namespace std;

/*Cau truc thong tin chung ve sinh vien*/

typedef struct

{

        int masv;

        char hoten[30];

}sinhvien;

/*Cau truc cua mot node trong danh sach lien ket don*/

typedef struct node

{

        sinhvien infor;

        struct node *next;

   }*nodeptr;

/*Cac thao tac tren danh sach lien ket don*/

/*Khoi dong danh sach lien ket don*/

void init(nodeptr *L)

{

*L=NULL;

}

/*============Cap phat mien nho cho mot node cua danh sach lien ket don===========*/

nodeptr getnode()

   {

nodeptr p;

p=(nodeptr)malloc(sizeof(struct node));

         return p;

}

/*==========Giai phong mien nho cho mot node cua danh sach lien ket don===========*/

void freenode(nodeptr p)

{

free(p);

}

/*==================Kiem tra tinh rong cua danh sach lien ket don===========*/

int empty(nodeptr *L)

{

if(*L==NULL) return 1;

return 0;

}

/*==================Them mot node vao dau danh sach lien ket don============*/

nodeptr add_top(nodeptr *L,sinhvien sv)

{

nodeptr p;

p=getnode();

p->infor=sv;

if(empty(L))

      {

p->next=NULL;

*L=p;

return p;

         }

p->next=*L;

*L=p;

return p;

}

/*===================Them mot node vao cuoi danh sach lien ket don================*/

nodeptr add_bottom(nodeptr *L,sinhvien sv)

{

nodeptr p,q;

      q=getnode();

q->infor=sv;

if(empty(L))

      {

q->next=NULL;

*L=q;

return q;

}

p=*L;

while(p->next!=NULL)

      {

p=p->next;

}

p->next=q;

q->next=NULL;

return q;

}

/*===================Them node truoc node p trong danh sach lien ket don===============*/

nodeptr add_before(nodeptr *L,sinhvien sv,int n)

{

nodeptr p,q;

q=getnode();

q->infor=sv;

if(empty(L))

      {

cout<<"

Vi tri khong hop le ";

//delay(2000);

return(NULL);

}

p=*L;int i=0;

while(p!=NULL&&i<n)

      {

i++;

p=p->next;

}

if(p==NULL)

      {

cout<<"

Vi tri khong hop le ";

//delay(1000);

return(NULL);

}

q->next=p->next;

p->next=q;

return q;

getch();

}

/*==================Loai bo node o dau danh sach lien ket don==================*/

void del_top(nodeptr *L)

{

nodeptr p,q;

if(empty(L))

      {

cout<<"

Danh sach rong ";

//delay(2000);

return;

}

p=*L;

q=p;

p=p->next;

*L=p;

cout<<"

Node vua loai bo ";

cout<<"

Ho ten: "<<q->infor.hoten;

cout<<"

Ma sinh vien: "<<q->infor.masv;

//delay(1000);

freenode(q);

   }

/*===================Loai bo node o cuoi danh sach lien ket don===============*/

void del_bottom(nodeptr *L)

{

   nodeptr p,q;

if(empty(L))

      {

cout<<"

Danh sach rong ";

            //delay(2000);

return;

}

p=*L;

if(p->next==NULL)

      {

del_top(L);

return;

}

      while((p->next)->next!=NULL)

      {

p=p->next;

}

      q=p->next;

p->next=NULL;

cout<<"

Node vua loai bo ";

cout<<"

Ho ten: "<<q->infor.hoten;

cout<<"

Ma sinh vien: "<<q->infor.masv;

//delay(1000);

freenode(q);

}

/*===================Loai bo node truoc node p trong danh sach lien ket don==================*/

void del_before(nodeptr *L,int n)

{

nodeptr p,q;int i;

if(empty(L))

      {

cout<<"

Danh sach rong ";

//delay(2000);

return;

}

      p=*L;

if(p->next==NULL)

      {

del_top(L);

            return;

}

i=0;

while(p!=NULL&&i<n-1)

      {

i++;

p=p->next;

}

      if(p->next==NULL)

      {

cout<<"

Vi tri khong hop le";

//delay(2000);

return;

}

      q=p->next;

p->next=q->next;

cout<<"

Node vua loai bo ";

cout<<"

Ho ten: "<<q->infor.hoten;

cout<<"

Ma sinh vien: "<<q->infor.masv;

//delay(1000);

freenode(q);

}

/*====================Duyet danh sach lien ket don==============*/

void duyet(nodeptr *L)

{

nodeptr p;

if(empty(L))

      {

cout<<"

Danh sach rong ";

//delay(2000);

return;

}

int i=1;

p=*L;

while(p!=NULL)

      {

cout<<"

Sinh vien thu: "<<i++;

            cout<<"

---";

            cout<<"

Ho ten: "<<p->infor.hoten;

cout<<"

Ma sinh vien: "<<p->infor.masv;

p=p->next;

            cout<<"

------------------------" ;

}

}

/*====================Sap xep danh sach theo mot khoa=================*/

void sapxepnode(nodeptr *L)

{

nodeptr p,q;

sinhvien temp;

for(p=*L;p!=NULL;p=p->next)

      {

for(q=p->next;q!=NULL;q=q->next)

            {

if(p->infor.masv>q->infor.masv)

                  {

temp=p->infor;

p->infor=q->infor;

q->infor=temp;

}

}

}

cout<<"

Danh sach sau khi duoc sap xep: ";

for(p=*L;p!=NULL;p=p->next)

      {

cout<<"

Ho ten: "<<p->infor.hoten;

cout<<"

Ma sinh vien: "<<p->infor.masv;

}

   }

/*=======================Tim kiem danh sach================*/

void searchnode(nodeptr *L,int masv)

{

nodeptr p;

p=*L;

while(p!=NULL&&p->infor.masv!=masv)

p=p->next;

if(p==NULL)

      {

cout<<"

Sinh vien khong ton tai ";

}

else

         {

cout<<"

Sinh vien can tim ";

cout<<"

Ho ten: "<<p->infor.hoten;

cout<<"

Ma sinh vien: "<<p->infor.masv;

}

   }

/*===================Ham thao tac===================*/

int main()

{

//clrscr();

nodeptr L;

sinhvien sv1;

int vitri,masv;

int chon;

init(&L);

do

      {

// clrscr();

cout<<"

\t THAO TAC VOI DANH SACH LIEN KET DON ";

               cout<<"

\t------------------------------------";

cout<<"

\t 1.Them node vao dau danh sach ";

cout<<"

\t 2.Them node vao cuoi danh sach ";

               cout<<"

\t 3.Them node vao giua danh sach ";

cout<<"

\t 4.Loai bo node o dau danh sach ";

cout<<"

\t 5.Loai bo node o cuoi danh sach ";

               cout<<"

\t 6.Loai bo node o giua danh sach ";

cout<<"

\t 7.Duyet danh sach ";

cout<<"

\t 8.Sap xep danh sach ";

cout<<"

\t 9.Tim kiem danh sach ";

cout<<"

\t 0.Thoat ";

cout<<"

\t #chon (1->9 or 0 de thoat): ";

cin>>chon;cin.ignore();

switch(chon)

               {

                     case 1:

                         cout<<"

Ho ten sinh vien: ";

                           gets(sv1.hoten);

                          cout<<"

Ma sinh vien: ";

                           cin>>sv1.masv;

                          add_top(&L,sv1);

                           break;

                      case 2:

                           cout<<"

Ho ten sinh vien: ";

                           gets(sv1.hoten);

                           cout<<"

Ma sinh vien: ";

                           cin>>sv1.masv;

                           add_bottom(&L,sv1);

                           break;

                       case 3:

                          cout<<"

Vi tri them: ";

                           cin>>vitri;

                           cout<<"

Ho ten sinh vien: ";

                           gets(sv1.hoten);

                           cout<<"

Ma sinh vien: ";

                           cin>>sv1.masv;

                           add_before(&L,sv1,vitri-1);

                           break;

                    case 4:

                         del_top(&L);

                           break;

                    case 5:

                     del_bottom(&L);

                     break;

                   case 6:

                          cout<<"

Vi tri loai bo: ";

                           cin>>vitri;

                          del_before(&L,vitri-1);

                           break;

                  case 7:

                     duyet(&L);

                           break;

                    case 8:

                         sapxepnode(&L);

                           break;

                     case 9:

                     cout<<"

Ma sinh vien can tim: ";

                           cin>>masv;

                            searchnode(&L,masv);

                           break;

}

getch();

}

      while(chon!=0);

}

Bạn đang đọc truyện trên: Truyen2U.Pro

#qqqdslk