Programming Language
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.


FOREVER STUDY
 
Trang ChínhPortalTìm kiếmLatest imagesĐăng kýĐăng Nhập
Tìm kiếm
 
 

Display results as :
 
Rechercher Advanced Search
Latest topics
» Tối ưu hóa thuật toán
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeThu Apr 14, 2011 8:47 pm by gianggiangonline

» Can moi nguoi giup do lam bai tap nay
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Mar 26, 2011 5:23 am by nameless2604

» Bài tập tuần 1.
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeThu Feb 17, 2011 11:40 pm by Admin

»  tên hàn quốc của tớ là jung hyun in! tên của bạn là gì vậy?
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeThu Dec 30, 2010 3:17 am by gianggiangonline

» Anh không chỉ quan trọng............như một chiếc đồng hồ báo thức của em!!!
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Oct 23, 2010 10:58 am by chien_le

» Có những điều thú vị mà không nói ra thì ai cũng biết
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeTue Oct 19, 2010 11:03 pm by gianggiangonline

» [PopCap Game] Plants Vs Zombies [MF]
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeTue Oct 19, 2010 9:25 pm by kingofdrak

» help me me memememememem
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeMon Oct 18, 2010 10:22 am by chien_le

» 3 bai tap ve de quy
Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeTue Oct 12, 2010 6:36 am by chien_le

Navigation
 Portal
 Diễn Đàn
 Thành viên
 Lý lịch
 Trợ giúp
 Tìm kiếm
Diễn Đàn
Affiliates
free forum


 

 Danh sách liên kết + Hàng đợi + Ngăn xếp

Go down 
4 posters
Tác giảThông điệp
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeTue Sep 07, 2010 7:36 am

Anh em khởi động vài bài.

////////////////////////////////////

+ Danh sách liên kết:

Viết chương trình thực hiện những công việc sau:
- Khởii tạo một danh sach nối đơn chứa thông tin về các thành viên trong nhóm: ví dụ: họ tên, lớp, mssv.
- Thêm một thành viên mới, loại bỏ một thành viên
- Tìm kiếm thành viên theo tên.
- .............
Bác nào thích thì thêm các chức năng khác như là bạn đó là nam hay nữ, tình trạng hôn nhân,...

///////////////////////////////////////

+ Hàng đợi:

- Viết chương trình làm những công việc sau:
. Khởi tạo hàng đợi
. Nhập phần tử vào hàng đợi
. Thêm bớt phần tử vào hàng đợi
Lấy phần tử là số nguyên(hoặc các giá trị khác, tùy sở thích mọi người).

-Viết chương trình kiểm tra một chuỗi có là palindromes hay không, ví dụ chuỗi palindromes : RADAR, NOON là những chuỗi palindromes.

Cái này chỉ yêu cầu làm một bài thôi!!!

//////////////////////////////

+ Ngăn xếp:

- Viết chương trình kiểm tra ngoặc đúng, yêu cầu người dùng nhập vào một biểu thức, kiểm tra tính đúng đắn của việc sử dụng dấu ngoặc trong biểu thức đó, nếu ngoặc chưa đúng thì chỉ ra số ngoặc cần thêm cho đúng( Bác nào muốn làm ok hơn thì làm thêm vị trí thêm ngoặc, loại ngoặc cần thêm)
ví dụ: ( a + [c+b*d]})
=>Biểu thức sai, cần thêm 1 ngoặc.

Đây chỉ là bài tập nhằm ôn lại một số kiến thức cơ bản thao tác trên con trỏ và danh sách để phục vụ cho việc thao tác trên cây nhị phân trong thời gian tới, mọi người cố gắng nắm chắc, sau này code về cây nhị phân sẽ nhanh hơn.
Bài tập thì nhiều vô số nhưng mình làm vài bài thôi, chủ yếu để nắm giải thuật, cách tiếp cận, và cách cài đặt trực tiếp.

Do your best, the rest will come!!!
Về Đầu Trang Go down
https://study.all-up.com
mrmax




Tổng số bài gửi : 59
Points : 5111
Reputation : 0
Join date : 01/09/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeWed Sep 08, 2010 11:14 am

Đây là bản demo tôi mới viết xong để anh em tham khảo phát triển thuật toán
LIÊN KẾT ĐƠN

#include<conio.h>
#include<stdio.h>
#include<stdlib.h>>
struct node
{
int item;
struct node *next;
};
typedef struct node *listnode;
void Init(listnode *p) { *p=NULL; }
int Empty(listnode p)
{
if(p==NULL) return 1;
else return 0;
}
void Insert_begin(listnode *p,int x)
{
listnode q;
q=(listnode)malloc(sizeof(struct node));
q->item=x;
q->next=NULL;
if(Empty(*p)) *p=q;
else
{
q->next=*p;
*p=q;}
}
void Insert_end(listnode *p,int x)
{
listnode r,q;
q=(listnode)malloc(sizeof(struct node));
q->item=x;
q->next=NULL;
if(Empty(*p)) *p=q;
else{
r=*p;
while(r->next!=NULL) r=r->next;
r->next=q;}
}
void Print(listnode p)
{
listnode q=p;
while(q){
printf("%d",q->item);
printf("\n");
q=q->next;
}
}
int main()
{
listnode p;
Init(&p);
int x[]={1,5,3,6,9,34,36,65,111};
Insert_begin(&p,x[0]);
for(int i=1;i<9;i++)
Insert_end(&p,x[i]);
Print(p);
getch();
}

STACK


#include<conio.h>
#include<stdio.h>
#include<stdlib.h>>
struct node
{
int item;
struct node *next;
};
typedef struct node *stacknode;
typedef struct
{
stacknode top;
}stack;
void StackInit(stack *s){s->top=NULL;}
int EmptyStack(stack s)
{
if(s.top==NULL) return 1;
else return 0;
}
void push(stack *s,int x)
{
stacknode p;
p=(stacknode)malloc(sizeof(struct node));
p->item=x;
p->next=s->top;
s->top=p;
}
void pop(stack *s)
{
stacknode p;
if(EmptyStack(*s)) printf("ngan xep rong");
p=s->top;
s->top=s->top->next;
printf("%d\n",p->item);
free(p);
}
int main()
{
int x[]={1,2,3,4,5,6,7,8,9};
stack s;
StackInit(&s);
for(int i=0;i<9;i++)
push(&s,x[i]);
while(!EmptyStack(s)) pop(&s);
getch();
}


còn bây h thì đi ngủ mai còn đi học sớm.oải Sad(
Về Đầu Trang Go down
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 11, 2010 8:51 am

anh em dao nay luoi ghe
the nay vao giai doan sau chien dau sao day Sad Rolling Eyes
Về Đầu Trang Go down
https://study.all-up.com
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 11, 2010 11:29 am

Khởi động bài 1 nha:


///////////////////////////////////////////////////
/// Danh sach lien ket don
// Quan li danh sach thanh vien cua nhom
////////////////////////////////////////////////////

#include<iostream.h>
#include<string.h>
#include<conio.h>
#define SIZE_NAME 30
#define SIZE_CLASS 50
#define SIZE_CODE 10
typedef struct SINH_VIEN
{
char cTen[SIZE_NAME];
char cMaso[SIZE_CODE];
char cLop[SIZE_CLASS];
int iGioitinh; // 1 : boy, 0 : girl
SINH_VIEN *pnext;
}Danhsach;
Danhsach *ptr;

//////////////////////////////////////////////////////
/// KHAI BAO CAC HAM SU DUNG TRONG CHUONG TRINH

Danhsach *Khoitao();
Danhsach *Themthanhvien(Danhsach *, Danhsach *); // Them vao cuoi danh sach
int Timkiem(Danhsach *, char cMaso[]);
void Hienthi(Danhsach*);
Danhsach *Menu(Danhsach *);
/////////////////////////////////////////////////////

int main()
{
ptr = (Danhsach*)malloc(sizeof(Danhsach));
ptr = Khoitao();
do
{
ptr = Menu(ptr);
if(ptr == NULL)
{
break;
}
}while( ptr!= NULL);
cout<<"\nAn mot phim bat ki de ket thuc chuong trinh... ";
getch();
return 0;
}
/////////////////////////////
// XAY DUNG CAC HAM

/////////////////////////////
/// HAM KHOI TAO DANH SACH
/////////////////////////////
Danhsach *Khoitao()
{
return NULL;
}

//////////////////////////////////////////
// Them thanh vien vao cuoi danh sach
// Input : Cac thong tin ve sinh vien
/////////////////////////////////////////
Danhsach *Themthanhvien(Danhsach *First_Member, Danhsach *New_Member )
{
New_Member -> pnext = NULL;
if(First_Member == NULL)
{
cout<<"\nDay la thanh vien dau tien cua nhom.";
New_Member -> pnext = First_Member;
First_Member = New_Member;
}
else
{
while( First_Member->pnext != NULL)
{
First_Member = First_Member -> pnext;
}
First_Member -> pnext = New_Member;
cout<<"\nDa them thanh vien vao cuoi danh sach";
}
return First_Member;
}

//////////////////////////////////////////////
// TIM KIEM THANH VIEN TRONG DANH SACH
// Tim kiem thanh vien nho khoa la ma so
////////////////////////////////////////////

int Timkiem(Danhsach *Member, char cMaso[10])
{
while(Member != NULL)
{
if(strcmp(Member -> cMaso, cMaso) == 0)
{
cout<<"\nCO THANH VIEN NAY TRONG NHOM.";
cout<<"\nHo ten : "<<Member -> cTen;
cout<<"\nMa so : "<<Member -> cMaso;
cout<<"\nLop : "<<Member -> cLop;
cout<<"\nGioi tinh:";
if(Member -> iGioitinh == 1)
{
cout<<" A boy!!!";
}
else
{
cout<<" A girl!!!";
}
return 1;
}
Member = Member -> pnext;
}
return 0;
}

/////////////////////////////////////////
// HIEN THI DANH SACH THANH VIEN
////////////////////////////////////////
void Hienthi(Danhsach *Member)
{
Danhsach *pTemp;
int iCount=0;
pTemp = Member;
cout<<"\n DANH SACH THANH VIEN\n\n";
while(Member != NULL)
{
cout<<"\n|"<<Member->cTen<<"|"<<Member -> cMaso<<"|"<< Member -> cLop<<"|";
if( Member->iGioitinh == 1)
{
cout<<" A boy";
}
else
{
cout<<" A girl";
}
Member = Member ->pnext;
iCount++;
}
if(iCount ==0)
{
cout<<"\n CHUA CO THANH VIEN NAO CUA NHOM";
}
}


//////////////////////////////
// TAO LAP MENU SU DUNG
//////////////////////////////

Danhsach *Menu(Danhsach *ptr)
{
int iChoice, iFind;
char cName[SIZE_NAME];
char cCode[SIZE_CODE];
char cClass[SIZE_CLASS];
int iGender;
cout<<"\n MENU";
cout<<"\n1. Xem thanh vien";
cout<<"\n2. Tim kiem thanhvien";
cout<<"\n3. Them thanh vien";
cout<<"\n4. Exit";
cout<<"\n\nHay chon mot chua nang(1->4): ";
cin>>iChoice;
switch(iChoice)
{
case 1:
Hienthi(ptr);
break;
case 2:
cout<<"\n CHUC NANG TIM KIEM THANH VIEN\n";
cout<<"\nNhap vao ma so cua thanh vien muon tim kiem: ";
fflush(stdin);
cin.get(cName, SIZE_NAME);
iFind = Timkiem(ptr,cName);
if(iFind == 0)
{
cout<<"\nKHONG CO THANH VIEN NAY TRONG NHOM.";
}
break;
case 3:
cout<<"\n CHUC NANG THEM THANH VIEN\n";
cout<<"\n\nNgung them thanh vien nhap ten: exit ";
do
{
Danhsach *pTemp;
pTemp = (Danhsach*)malloc(sizeof(Danhsach));
cout<<"\n\nHo va ten: ";
fflush(stdin);
cin.get(cName,SIZE_NAME);
if(strcmp(cName,"exit") == 0)
{
break;
}
strcpy(pTemp -> cTen,cName);
cout<<"\nMa so: ";
fflush(stdin);
cin.get(cCode,SIZE_CODE);
strcpy(pTemp -> cMaso,cCode);
cout<<"\nLop: ";
fflush(stdin);
cin.get(cClass,SIZE_CLASS);
strcpy(pTemp -> cLop,cClass);
cout<<"\nGioi tinh(1: boy, 0: girl)";
cin>>iGender;
pTemp -> iGioitinh = iGender;
ptr = Themthanhvien(ptr,pTemp);
}while(strcmp(cName,"exit")!=0);
break;
case 4:
return NULL;
default:
cout<<"\n CHON NHAM CHUC NANG";
break;
}
return ptr;
}



Mọi người tích cực làm bài tập đi, phải chăm chỉ mới được chứ.
Very Happy Very Happy Very Happy Very Happy
P/s: Bài này còn một điểm chưa hoàn chỉnh đâu, mọi người tìm mà sửa nha!!pirat pirat pirat pirat
Do your best, the rest will come!
Về Đầu Trang Go down
https://study.all-up.com
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSun Sep 12, 2010 4:02 am

Bài stack lam trên cơ sở bài của mrmax, về thuật toán bài này chưa triệt để, chỉ làm để sử dụng stack thôi


////////////////////////////////////////
#include<iostream.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

struct node
{
char item;
struct node *next;
};

typedef struct node *stacknode;

typedef struct
{
stacknode top;
}stack;
void StackInit(stack *s)
{
s->top=NULL;
}
int EmptyStack(stack s)
{
if(s.top==NULL) return 1;
else return 0;
}
void push(stack *s,char x)
{
stacknode p;
p=(stacknode)malloc(sizeof(struct node));
p->item = x;
p->next=s->top;
s->top=p;
}
char pop(stack *s)
{
stacknode p;
p=s->top;
s->top=s->top->next;
return (p->item);
free(p);
}
/////////////////////////////////
///// MAIN
int main()
{

char cKitu[100], cTest;
int iCount1=0, iCount2 = 0, iCount3 =0;
int iC,i;
stack s;
StackInit(&s);
cout<<"\n Nhap vao bieu thuc can kiem tra(ngung nhap an enter): \n";
fflush(stdin);
cin.get(cKitu,100);
iC=strlen(cKitu);
for(i=0;i<iC;i++)
{
if( (cKitu[i] == '(') || (cKitu[i] == '{')|| (cKitu[i] == '[') )
{
push(&s,cKitu[i]);
}
if( cKitu[i] == ')' ) // Gap ngoac dong ')'
{
iCount1--;
if(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='{')
iCount2++;
if(cTest=='[')
iCount3++;
if(cTest=='(')
iCount1++;
}
}
if((cKitu[i] == '}')) // Gap ngoac dong ')'
{
iCount2--;
if(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='(')
iCount1++;
if(cTest=='[')
iCount3++;
if(cTest=='{')
iCount2++;
}
}
if((cKitu[i] == ']')) // Gap ngoac dong ')'
{
iCount3--;
if(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='{')
iCount2++;
if(cTest=='(')
iCount1++;
if(cTest=='[')
iCount3++;
}
}
}
while(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='{')
iCount2++;
if(cTest=='(')
iCount1++;
if(cTest=='[')
iCount3++;
}
if(iCount1 < 0)
{
cout<<"\nDa thieu ngoac '(', so luong: ";
cout<<(-iCount1);
}
else if(iCount1 >0)
{
cout<<"\nDa thieu ngoac ')', so luong: ";
cout<<iCount1;
}
if(iCount2 < 0)
{
cout<<"\nDa thieu ngoac '{', so luong: ";
cout<<(-iCount2);
}
else if(iCount2 >0)
{
cout<<"\nDa thieu ngoac '}', so luong: ";
cout<<iCount1;
}
if(iCount3 < 0)
{
cout<<"\nDa thieu ngoac '[', so luong: ";
cout<<(-iCount3);
}
else if(iCount3 >0)
{
cout<<"\nDa thieu ngoac ']', so luong: ";
cout<<iCount3;
}
if(iCount1 == 0 && iCount2 == 0 && iCount3 == 0)
{
cout<<"\n Bieu thuc dung.";
}
cout<<"\n Press any key to finish";
getch();
return 0;
}


P/s: ví dụ trường hợp nhập vào ngoặc như sau:
)( thì chương trình vẫn sẽ báo ngoặc đúng.
Do your best, the rest will come!
Về Đầu Trang Go down
https://study.all-up.com
mrmax




Tổng số bài gửi : 59
Points : 5111
Reputation : 0
Join date : 01/09/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSun Sep 12, 2010 8:49 am

í tưởng của cường là tốt nhưng thuật toán này sai khi số dấu đóng ngoặc và mở ngoắc cùng kiểu là bằng nhau
VD: )( ; )))((( ; )())(( v.v
sai lầm nằm ở chỗ không xác định ngăn xếp rỗng khi gặp dấu đóng ngoặc để xử lý
VD: )( khi gặp dấu ) thì iCout1=-1; nhưng sau đó ( vẫn đc đưa vào ngăn xếp và sau đó trong thần vòng lặp while iCout1++=0 dó đó biểu thức vẫn đúng

Giải phấp tạm thời có thể là thế này(Nhưng không hay)Bà con cùng nhau sửa

#include
#include
#include
#include

struct node
{
char item;
struct node *next;
};

typedef struct node *stacknode;

typedef struct
{
stacknode top;
}stack;
void StackInit(stack *s)
{
s->top=NULL;
}
int EmptyStack(stack s)
{
if(s.top==NULL) return 1;
else return 0;
}
void push(stack *s,char x)
{
stacknode p;
p=(stacknode)malloc(sizeof(struct node));
p->item = x;
p->next=s->top;
s->top=p;
}
char pop(stack *s)
{
stacknode p;
p=s->top;
s->top=s->top->next;
return (p->item);
free(p);
}
/////////////////////////////////
///// MAIN
int main()
{

char cKitu[100], cTest;
int iCount1=0, iCount2 = 0, iCount3 =0;
int iC,i;
stack s;
StackInit(&s);
cout<<"\n Nhap vao bieu thuc can kiem tra(ngung nhap an enter): \n";
fflush(stdin);
cin.get(cKitu,100);
iC=strlen(cKitu);
for(i=0;i
{
if( (cKitu[i] == '(') || (cKitu[i] == '{')|| (cKitu[i] == '[') )
{
push(&s,cKitu[i]);
}
if( cKitu[i] == ')' ) // Gap ngoac dong ')'
{
iCount1--;
if(EmptyStack(s))
{
cout<<"thieu ( "; //y tuong co ban la dat lai iCount=0;
iCount1=0;
}

if(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='{')
iCount2++;
if(cTest=='[')
iCount3++;
if(cTest=='(')
iCount1++;
}
}
if((cKitu[i] == '}')) // Gap ngoac dong ')'
{
iCount2--;
if(EmptyStack(s))
{
cout<<"thieu { ";
iCount2=0;
}

if(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='(')
iCount1++;
if(cTest=='[')
iCount3++;
if(cTest=='{')
iCount2++;
}
}
if((cKitu[i] == ']')) // Gap ngoac dong ')'
{
iCount3--;
if(EmptyStack(s))
{
cout<<"thieu [ ";
iCount3=0;
}

if(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='{')
iCount2++;
if(cTest=='(')
iCount1++;
if(cTest=='[')
iCount3++;
}
}
}

while(!EmptyStack(s))
{
cTest = pop(&s);
if(cTest=='{')
iCount2++;
if(cTest=='(')
iCount1++;
if(cTest=='[')
iCount3++;
}
if(iCount1 < 0)
{
cout<<"\nDa thieu ngoac '(', so luong: ";
cout<<(-iCount1);
}
else if(iCount1 >0)
{
cout<<"\nDa thieu ngoac ')', so luong: ";
cout<
}
if(iCount2 < 0)
{
cout<<"\nDa thieu ngoac '{', so luong: ";
cout<<(-iCount2);
}
else if(iCount2 >0)
{
cout<<"\nDa thieu ngoac '}', so luong: ";
cout<
}
if(iCount3 < 0)
{
cout<<"\nDa thieu ngoac '[', so luong: ";
cout<<(-iCount3);
}
else if(iCount3 >0)
{
cout<<"\nDa thieu ngoac ']', so luong: ";
cout<
}
if(iCount1 == 0 && iCount2 == 0 && iCount3 == 0)
{
cout<<"\n Bieu thuc dung.";
}
cout<<"\n Press any key to finish";
getch();
return 0;
}
Về Đầu Trang Go down
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSun Sep 12, 2010 10:16 am

uhm thì mình chỉ demo thôi, đã P/s rồi mà, cả bài danh sách nhóm cũng vẫn còn sai, mọi người tìm chỗ sai rồi sửa cho hoàn chỉnh Very Happy
Về Đầu Trang Go down
https://study.all-up.com
iShinichj

iShinichj


Tổng số bài gửi : 46
Points : 5071
Reputation : 0
Join date : 01/09/2010
Age : 34
Đến từ : HUT

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeMon Sep 13, 2010 12:43 am

Bài 1: Mãi mới ra được bản Beta dựa vào ý tưởng của Cường (Mấy phần này khó quá pale )
Mọi người góp ý nhé

#include<iostream>
#include<conio.h>
#include<string.h>
#include<iomanip>
using namespace std;

typedef struct DS
{
char ht[25];
char ms[10];
char lop[10];
int gioitinh;
}SV;

struct node{
SV info;
struct node *next;
};
//Khoi tao
node *Khoitao(SV x)
{
node *p;
p=new node;
p->info=x;
p->next=NULL;
return p;
}
//Them thanh vien vao cuoi ds
node *Add_Last(node *First,SV x)
{
node *p_new,*q;
p_new=Khoitao(x);
if(First==NULL)
{
cout<<" Day la sinh vien dau tien cua danh sach \n";
p_new->next=First;
First=p_new;
}
else
{
q=First;
while(q->next!=NULL)
{
q=q->next;
}
q->next=p_new;
cout<<" Da them thanh vien vao danh sach \n";
}
return First;
}
//Tim kiem thanh vien
void Find(node *sv,char ten[25])
{
int count;
count=0;
while(sv!=NULL)
{
if(strcmp(sv->info.ht,ten)==0)
{
cout<<"\n Sinh vien:";
cout<<"\n Ho ten: "<<sv->info.ht;
cout<<"\n MSSV: "<<sv->info.ms;
cout<<"\n Lop: "<<sv->info.lop;
cout<<"\n Gioi tinh: ";
if(sv->info.gioitinh==1) cout<<" A boy";
else cout<<" A girl";
count++;
}
sv=sv->next;
}
if(!count) cout<<"\n Khong tim thay";
}
//Hien thi danh sach
void Hienthi(node *sv)
{
if(sv==NULL) cout<<"\n Chua co sinh vien trong danh sach \n";
else
{
cout<<"\n DANH SACH SINH VIEN\n\n";
while(sv!=NULL)
{
cout<<"\n +"<<setw(25)<<sv->info.ht<<setw(10)<<sv->info.ms<<setw(10)<<sv->info.lop;
if(sv->info.gioitinh==1) cout<<setw(10)<<" A boy";
else cout<<setw(10)<<" A girl";
sv=sv->next;
}
}
}
int main()
{
char chon;
node *p;SV x;
char ten[25];
p=new node;
p=NULL;
cout<<"\n -------MENU--------";
cout<<"\n 1.Xem danh sach";
cout<<"\n 2.Tim kiem sinh vien";
cout<<"\n 3.Them sinh vien";
cout<<"\n 4.Exit";
while(1)
{
cout<<"\n\n Nhap chuc nang tu 1->4: ";
cin>>chon;
switch(chon)
{
case '1':
Hienthi(p);break;
case '2':
cout<<"\n Nhap ho ten muon tim: ";
cin.ignore(1);
cin.get(ten,25);
Find(p,ten);break;
case '3':
int n,count;
cout<<"\n Nhap so SV muon them: n= ";
cin>>n;
count=0;
do{
cout<<"\n Ho ten: ";
cin.ignore(1);
cin.get(x.ht,25);
cout<<" MSSV: ";
cin.ignore(1);
cin.get(x.ms,10);
cout<<" Lop: ";
cin.ignore(1);
cin.get(x.lop,20);
cout<<" Gioi tinh: (Boy-1;Girl-0): ";
cin>>x.gioitinh;
p=Add_Last(p,x);
count++;
}while(count<n);break;
case '4':
cout<<"\n Thoat!!!";
exit(0);break;
default: cout<<"\n Khong co chuc nang nay \n";break;
}
}
_getch();
}





Được sửa bởi iShinichj ngày Wed Sep 22, 2010 11:11 am; sửa lần 1.
Về Đầu Trang Go down
https://study.all-up.com/forum.htm
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 18, 2010 11:18 pm

Thực ra dùng class để kiểm soát bài này sẽ hay hơn, phần danh sách liên kết ko dùng nhiều lắm, sau này có thiên về lập trình thì cũng không dùng loại này đâu. Very Happy:D:D:D:D Vì thế mọi người mà thấy nó khó thì cũng ko phải lo lắng nhiều đâu.
Về Đầu Trang Go down
https://study.all-up.com
iShinichj

iShinichj


Tổng số bài gửi : 46
Points : 5071
Reputation : 0
Join date : 01/09/2010
Age : 34
Đến từ : HUT

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeWed Sep 22, 2010 11:22 am

Bài DS của Cường sửa một chút về hàm Themthanhvien là đc:


Danhsach *Themthanhvien(Danhsach *First_Member, Danhsach *New_Member )
{
Danhsach *p;p=First_Member;
New_Member -> pnext = NULL;
if(First_Member == NULL)
{
cout<<"\nDay la thanh vien dau tien cua nhom.";
New_Member -> pnext = NULL;
First_Member = New_Member;
}
else
{
while( p->pnext != NULL)
{
p = p -> pnext;
}
p -> pnext = New_Member;
cout<<"\nDa them thanh vien vao cuoi danh sach";
}

return First_Member;
}
Về Đầu Trang Go down
https://study.all-up.com/forum.htm
chien_le

chien_le


Tổng số bài gửi : 35
Points : 5055
Reputation : 0
Join date : 01/09/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeFri Sep 24, 2010 6:01 am

cac pro da lam het cac bai kho roi minh danh phai lam bai con laj ve cac hang doi thoi.cacbac de phan em bai do nha

voi ca? minh muon hoi? bai chuoi palindromes dung hang doi se giai quyet duoc j
neu ko dung hang doi

int lg=0;
int i,j;
i=1;
j=strlen(s)-1;
while( a[i] == a[j] )
{
i++;
j--;
if (i>=j)
{
lg=1;
break;
}
}
if(lg) cout<<"day la day palin.."<<endl;
else cout<<"ko phai"<<endl;
Về Đầu Trang Go down
chien_le

chien_le


Tổng số bài gửi : 35
Points : 5055
Reputation : 0
Join date : 01/09/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeFri Sep 24, 2010 6:02 am

nham (s[i]==s[j])
Về Đầu Trang Go down
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeFri Sep 24, 2010 10:28 pm

uhm
mình thấy phần hàng đợi hay đó
Chiến code đi, dùng danh sách liên kết nha
Về Đầu Trang Go down
https://study.all-up.com
chien_le

chien_le


Tổng số bài gửi : 35
Points : 5055
Reputation : 0
Join date : 01/09/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeFri Sep 24, 2010 11:01 pm

ok
Về Đầu Trang Go down
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 25, 2010 5:52 am

Vấn đề không phải là dùng hàng đợi để giải quyết được gì mà dùng cái đó để làm quen với hàng sử dụng hàng đợi thôi mà
Về Đầu Trang Go down
https://study.all-up.com
Admin
Admin



Tổng số bài gửi : 35
Points : 5081
Reputation : 0
Join date : 31/08/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 25, 2010 5:55 am

Chỗ hưng sửa đúng rồi, nếu chỉ dùng ngay con trỏ FirstMember thì chỉ chứa được 2 phần tử thôi.
mọi người có biết tại sao lại chỉ chứa được hai phần tử không??????????
Very Happy Very Happy
Very Happy Very Happy

Do your best, the rest will come!!!
Về Đầu Trang Go down
https://study.all-up.com
iShinichj

iShinichj


Tổng số bài gửi : 46
Points : 5071
Reputation : 0
Join date : 01/09/2010
Age : 34
Đến từ : HUT

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 25, 2010 6:21 am

Chắc là do trả về con trỏ First ở vị trí trước vị trí cuối, nên khi duyệt sẽ bắt đầu từ vị trí con trỏ First

1: -------------->First->New_Member->NULL : chỉ duyệt hai phần tử cuối
2: First->---------->p->New_Member->NULL: duyệt từ đầu danh sách

Về Đầu Trang Go down
https://study.all-up.com/forum.htm
chien_le

chien_le


Tổng số bài gửi : 35
Points : 5055
Reputation : 0
Join date : 01/09/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 25, 2010 9:09 am

#include<conio.h>
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<iomanip.h>
struct HD
{
int iTuoi;
char chTen[20];
HD *pNext;
};
void Tao_Menu(HD*);
void Loai_Bo(HD**,HD**);
void Hien_Thi(HD*);
int main (void)
{
HD *p = NULL ;
Tao_Menu(p);
getch();
return(0);
}
void Tao_Menu(HD* p)
{
char ch,name[21];
HD *last = NULL;
HD *first = NULL;

do
{
clrscr();
cout<<"1.them vao hang doi"<<endl;
cout<<"2.loai bo 1 nguoi khoi hang doi"<<endl;
cout<<"3.hien thi hang doi"<<endl;
cout<<"4.exit"<<endl;
cout<<"nhap lua chon cua ban ......"<<endl;
if ((ch = getch()) == '1')
{
clrscr();
cout<<"them nguoi vao hang doi,khi ko muon nhap nua nhap ten rong~"<<endl;
do
{
cout<<"nhap ten"<<endl;
fflush(stdin);
gets(name);
if(name[0] != '\0')
{
p = new(HD);
strcpy(p->chTen,name);
cout<<"nhap tuoi "<<endl;
cin>>p->iTuoi;
p->pNext = NULL;
if(first != NULL) last->pNext=p;
else first = p;
last = p;
}
clrscr();
}
while ( name[0] != '\0' );
}
if(ch == '2') Loai_Bo(&first,&last);
if(ch == '3') Hien_Thi(first);
}
while ( ch != '4');
clrscr();
cout<<"press enter to exit"<<endl;
}
void Loai_Bo(HD** first,HD** last)
{
HD *p,*q;
int tuoi,dd;
char name[21];
clrscr();
q = NULL;
if (*first == NULL) {
cout<<"danh sach dang rong~ "<<endl;
getch();
}
else
{
cout<<"nhap ten nguoi can loai"<<endl;
fflush(stdin);
gets(name);
cout<<"nhap tuoi \n";
cin>>tuoi;
int lg;
do
{
lg = 0;
p = (*first);
while (( p != NULL) && (( strcmp(p->chTen,name))||( p->iTuoi != tuoi)))
{
q = p;
p = p->pNext;
}
dd = 1;
if(p !=NULL ) lg = 1;
if(p == (*first))
{
(*first) = p->pNext;
dd = 0;
}
if(p == (*last))
{
(*last) = q;
(*last)->pNext = NULL;
}
else if((dd)&&lg) q->pNext = p->pNext;
}
while (lg);
}
}
void Hien_Thi(HD* first)
{
clrscr();
if (first == NULL) cout<<"danh sach rong~"<<endl;
else
{
cout<<"danh sach gom"<<endl;
while( first != NULL)
{
cout<<setw(20)<<first->chTen<<" "<<first->iTuoi<<endl;
first=first->pNext;
}
}
getch();
}
Về Đầu Trang Go down
chien_le

chien_le


Tổng số bài gửi : 35
Points : 5055
Reputation : 0
Join date : 01/09/2010

Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitimeSat Sep 25, 2010 9:10 am

bai demo ve hang doi do thoi gian co han ko bit co j ko on? ko co j cac ban xem ho nha
Về Đầu Trang Go down
Sponsored content





Danh sách liên kết + Hàng đợi + Ngăn xếp Empty
Bài gửiTiêu đề: Re: Danh sách liên kết + Hàng đợi + Ngăn xếp   Danh sách liên kết + Hàng đợi + Ngăn xếp Icon_minitime

Về Đầu Trang Go down
 
Danh sách liên kết + Hàng đợi + Ngăn xếp
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» Đăng Kí Đề Tài "Danh Sách Móc Nối" -->> HERE !!!
» Sách tham khảo
» Sách tham khảo

Permissions in this forum:Bạn không có quyền trả lời bài viết
Programming Language :: ĐỀ BÀI :: BÀI TUẦN 2-
Chuyển đến