Friday, May 13, 2016

Tìm kiếm, xóa mặt hàng trên danh sách mặt hàng lưu trong danh sách liên kết đơn bằng C


Lưu ý: Bài này mình làm với mặt hàng đơn giản chỉ có hai thuộc tính là mã và tên, mọi người cần thêm đầy đủ các thuộc tính của một mặt hàng cần có như giá , số lượng, .....! 
-------------------------------------------------------------------------------------------------------------------------
Code quảng cáo của bạn ở đây

mathang.c

//Ho và tên:Trần Văn Linh
//Msv:581597
//Lớp:K58QLTT

#include<stdio.h>
#include<stdlib.h>

//==Khai bao cau truc
typedef struct mathang mathang;
struct mathang
{
int maMH;
char tenMH[256];
};
typedef struct node node;
struct node
{
mathang infor;
node *link;
}*F=NULL,*R=NULL;
//Khai bao ham
void inSert(mathang infor);// hàm chèn một nút
void  Search(int maMH);//Hàm tìm kiếm một mặt hàng với mã mặt hàng
void Delete(int maMH); //Hàm xóa một một mặt hàng với mã mặt hàng
void in();//Ham in ra danh sach các mặt hàng
//Chuong trình chính
int  main()
{
mathang mh;
int maMH;
char tl;
do
{
printf("Nhap ma mat hang: ");
scanf("%d",&mh.maMH);
fflush(stdin);//Xóa bộ đệm

printf("Nhap ten mat hang: ");
gets(mh.tenMH);
inSert(mh);//Bổ sung

printf("Co nhap nua khong (c/k):");
scanf("%c",&tl);
}while(tl=='c'||tl=='C');
printf("\n\nDanh sach da nhap la: \n");
in();
printf("\n\nNhap ma mat hang ban can xoa: ");
scanf("%d",&maMH);
Delete(maMH);
printf("\n\nDanh sach sau khi xoa: ");
in();
printf("\n\nNhap ma mat hang ban can tim kiem: ");
scanf("%d",&maMH);
Search(maMH);
return 0;
}
//--Dinh nghia ham
void inSert(mathang infor)
{
node *N;
N=(node*)malloc(sizeof(node));
N->infor=infor;
N->link=NULL;
//Bổ sung
N->link=F;
F=N;
}
//---------------------
void  Search(int maMH)
{
node *P;
P=F;
mathang tim;
      tim.maMH=0;
      strcpy(tim.tenMH,"");

while(P)
{
if(P->infor.maMH==maMH)
{
tim=P->infor;
break;
}
P=P->link;
}
    if(strcmp(tim.tenMH,"")==0)
    {
   printf("Mat hang khong ton tai");
   return;
    }
printf("Ma mat hang: %d\n",tim.maMH);
printf("Ten mat hang: %s",tim.tenMH);
}
//--------------------------
void Delete(int maMH)
{
node *P;
node *Q;
P=F;

while(P)
{
if(P->infor.maMH==maMH)
break;
Q=P;
P=P->link;
}

if(P)
{
if(P==F)//Trường hợp mặt hàng  cần xóa ở nút đầu tiên
F=F->link;
else
{
Q->link=P->link;
}
free(P);
}
}
//---------------------------------------------------------------------
void in()
{
node *P;
P=F;
while(P)
{
printf("Ma mat hang: %d\n",P->infor.maMH);
printf("Ten mat hang: %s\n\n",P->infor.tenMH);
P=P->link;
}
}

Lưu ý: Bài này mình làm với mặt hàng đơn giản chỉ có hai thuộc tính, mọi người cần thêm đầy đủ các thuộc tính của một mặt hàng cần có như giá , số lượng, .....! 

0 comments:

Post a Comment