link list
Trang 1[Tổng hợp ]Giải bài tập về Danh Sách Liên kết
22-05-2012
Thao tác trên danh sách liên kết đơn.
bài 1 : với các yêu cầu sau.
1: Nhập dạnh sách.( Thêm đầu - Thêm cuối)
2: Xuất danh sách.
3: Liệt kê các phần tử mang phần tử chẵn.
4: Tìm phần tử có phần tử nhỏ nhất.
5: Đếm số lượng số nguyên tố trong danh sách.
6: Thêm phần tử X vào trước phần tử chẳn đầu tiên.
7: Thêm phần tử X vào sau phần tử lẽ cuối cũng.
8: Xoá phần tử nhỏ nhất trong danh sách.
9: Xoá phần tử đứng trước và sau X trong danh sách.
10: Tách danh sách hiện tại thành 2 danh sách sao cho danh sách 1 chứa các phần tử nguyên tố, danh sách 2 chứa các phần tử còn lại
Trang 2typedef struct node
void AddHead(LIST &l,NODE* new_ele);
void AddTail(LIST &l,NODE* new_ele);
void InPut(LIST &l);
void OutPut(LIST l);
void XuatChan(LIST l);
NODE* TimMax(LIST l);
int DemSNT(LIST l);
void ThemXTruocChanDau(LIST &l,int x);
void ThemXSauLeCuoi(LIST &l,int x);
void XoaMin(LIST &l);
void XoaPhanTuTruoc_SauX(LIST &l,int x);
void TachDS(LIST &l,LIST &l1,LIST &l2);
Trang 4cout<<"\n\nMax la:"<<TimMax(l)->data<<endl<<endl; }break;
Trang 6cout<<"NULL";
}
void XuatChan(LIST l)
Trang 9NODE* TimX(LIST &l, int x)
Trang 10void TachDS(LIST &l,LIST &l1,LIST &l2)
Trang 11void Init(LIST &l);
NODE* GetNode(int x);
void AddHead(LIST &l,NODE* new_ele);
void AddTail(LIST &l,NODE* new_ele);
void InPut(LIST &l);
Trang 13void AddTail(LIST &l,NODE* new_ele)
HoanVi(p->data,q->data);}
void NoiDS(LIST l1,LIST l2,LIST &l3){
Trang 141: Nhập danh sách sinh viên.
2: Xuất danh sách sinh viên.
3: Xoá 1 sinh viên với MSSV khỏi danh sách.
4: Sắp xếp danh sách tăng dần theo điểm trung bình.
5: Liệt kê các sinh viên có điểm trung bình >= 5.
6: Đếm số lượng sinh viên nam.
7: Cập nhật điểm trung bình của 1 SV thông qua MSSV.
Trang 15void NhapSV(SINHVIEN &x);
void Input(LIST &l,SINHVIEN &sv);
void ChenDau(LIST &l, NODE* ele);
void ChenCuoi(LIST &l,NODE* ele);
void XuatSV(LIST l);
void XuatDSSV(LIST l,SINHVIEN sv);
void XoaSV(LIST &l,char mssv[]);
Trang 18else cout<<" nu."<<endl;
cout<<" * diem trung binh:
void XoaDau(LIST &l)
{
NODE* h=l.pHead;
l.pHead=l.pHead->pNext;
Trang 20struct node*pNext;//con tro ke tiep
int info;//kieu so nguyen cho danh sach
Trang 21void init(LIST &l);//ham gan cho danh sach la NULL
NODE* getnode(int x);//ham tao ra 1 node moi chua so nguyen
void addHead(LIST &l,NODE* new_ele)//ham them 1 node moi vao dau danhsach
void addTail(LIST &l, NODE* new_ele);//ham them node moi vao cuoi danh sach
void input(LIST &l); // ham nhap danh sach
void output(LIST l);// ham xuat danh sach
long sum(LIST l);//ham tinh tong danh sach
void HoanVi(int &a,int &b);// ham hoan vi
void SapXepTang(LIST l);//ham sap xep
p->info=x; // gan so nguyen x vao node moi
p->pNext=NULL;//cho node moi do tro den NULL
l.pTail=l.pHead;//pTail se bang pHead vi chi co
1 node H va T se nam chung
}
else//neu da co tren 1 node trong danh sach thi
{
new_ele->pNext=l.pHead;//node moi tro den pHead
l.pHead=new_ele;//pHead = node moi
Trang 23 Thành viên dưới đây đã cám ơn bài viết này của: jony_vu
reycord (19-09-2012)
148 Cảm ơn 35 Thanked 37 Times in 25 Posts
Node *H;// bang bam
char S[11]={'a','b','c','d','e','f','g','h','i','j','k'};//khai baomang gom 11 phan tu, la cac khoa can tim
// -{
Node *tmp=H[h(x)];
while(tmp!=NULL&& tmp->a!=x) tmp=tmp->Next;
return tmp;
Trang 24}
void Member(char x)//kiem tra xem co la khoa hay khong
// -{
MakeNull();
for(int i=0;i<11;i++) Insert(S[i]);
cout<<"BANG BAM BAN DAU LA:";
Trang 25/* nguyen mau cua ham*/
void Initialize( queue *pq);
Trang 26printf( \n NGUOI SAN XUAT/ NHA TIEU DUNG");
printf( \n 1- Nhap mot mat hang");
printf( \n 2- Xuat mot mat hang");
printf( \n 3- Xem mot mat hang");
printf( \n 4- Xem hang moi nhap");
printf( \n 5- Xem tat ca");
printf( \n 6- Xuat toan bo");
printf( \n Chuc nang chon:");chucnang=getch();
switch(chucnang){
case ‘1’:
printf( \n Ma mat hang:");scanf("%d",&mh.mahang);
printf( \n Ten hang:");scanf("%s", mh.ten);
Trang 27printf( \n Hang xuat");
printf( \n %6d %20s",q.node[front1].mahang, q.node[front1].ten);
break;
case ‘4’:
printf( \n Hang moi nhap");
printf( \n %5d %20s", q.node[q.rear].mahang,q.node[q.rear].ten);