30/09/2018, 17:58
bái tập vận dụng liên kết đôi
mn có thề xem giúp chương trình này với nó cứ bị lỗ hàm hói thôi ak
#include <iostream>
#include <string>
#include <iomanip>
#include <malloc.h>
using namespace std;
#define TRUE 1;
#define FALSE 0;
typedef struct sinhvien
{
int mssv;
char hoten[12];
float dtb;
}sinhvien;
// cau truc mot nut trong danh sach lien ket don
typedef struct node
{
sinhvien info;
struct node*next;
};
//khai bao kieu con tro chi den nut
typedef node *NODEPTR;
void initialize(NODEPTR*plist)//khoi tao danh sach lien ket
{
*plist=NULL;
}
NODEPTR getnode(void)//cap phat bo nho cho 1node
{
NODEPTR P;
P=(NODEPTR) malloc(sizeof(struct node));
return(P);
}
void Freenode(NODEPTR P)//xoa 1nut
{
free(P);
}
int empty(NODEPTR*plist)// kiem tra ds co rong ko
{
return (*plist==NULL? 1:0);
{
void traverse(NODEPTR *plist)//duyet ds
{
NODEPTR p;
int stt=0;
p=*plist; //cho p tro nut dau
if(empty(plist))
{
cout<<"danh sach rong"<<endl;
}
else
{
//di chuyen p di qua tung nut trong danh sach
while(p!=NULL)
{
cout<<endl<<stt++<<setw(15)<<p->info.mssv<<setw(16)<<p->info.hoten<<setw(10)<<p->info.dtb;
p=p->next;
}
}
void push (NODEPTR *plist,sinhvien x)//them mot node vao ds
{
NODEPTR p;
p= getnode();
p ->info=x;
p ->next=*plist;
*plist=p;
}
sinhvien pop(NODEPTR *plist)
{
NODEPTR p;
sinhvien x;
p=*plist;
*plist=p ->next;
x=p ->info;
freenode(p);
}
int main()
{
NODEPTR plist;
NODEPTR P;
sinhvien x;
int chon=1;
initialize(&plist);
while(chon!=0)
{
cout<<"
thu muc chinh "<<endl;
cout<<" 1- xem danh sinh vien "<<endl;
cout<<" 2- Them sinh vien vao danh sach"<<endl;
cout<<" 3- xoa sinh vien "<<endl;
cout<<" 4- hieu chinh sinh vien "<<endl;
cout<<" 5- sp xep sinh vien theo MSSV"<<endl;
cout<<" 6- tim kiem sinh vien theo MSSV"<<endl;
cout<<" 7- them sinh vien vao danh sach theo ma so sinh vien"<<endl;
cout<<"0. thoat"<<endl;
cout<<"bam chon "<<endl;
cin>>chon ;
if (chon==1)
{
cout<<" danh sach sinh vien "<<endl;
cout<<"
STT MSSV HOVATEN DIEM TB "<<endl;
traverse(&plist);
}
if(chon==2)
{
cout<<"
nhap mssv: ";
cin>>(x.mssv);
cin.ignore();
cout<<"
nhap ho ten ";
cin.getline(x.hoten,12);
cout<<"
nhap diem so ";
cin>>x.dtb;
push(&plist, x);
}
if(chon==3);
if(chon==4);
if(chon==6);
if(chon==7);
} }
Bài liên quan
Chỉnh sửa đưa vào thẻ code đi bạn,khó nhìn quá
@Su_Su minh ko biết đưa vào code nhưng mình chạy chương trình rồi nó cứ bị lỗi à
@funny_life_196 giúp với
Thứ nhất bạn kiểm tra mấy cái {}
Thứ 2 chỗ
Chỗ freenode§ bạn nhầm ,chữ Freenode viết hoa chữ F.he he
Thứ 3 ở mỗi biểu thức bạn nên có dấu cách cho code dễ đọc.
VD :
Hết!!!
@Su_Su
mình kiểm tra đủ nhưng cứ báo lỗi là sao
int empty(NODEPTR*plist)// kiem tra ds co rong ko
{
return (*plist==NULL? 1:0);
{ // Chỗ này phải là }
xl hàm pop của bạn có báo lỗi không
bác nên coi lại mấy cái typedef thấy nó có j đó đó trong đó, bác typedef struct sinhvien xong lại tạo ngay 1 cái kiểu sinhvien, bác thử bỏ typedef xem coi như thế nào tại typedef chỉ là ảo thôi chứ nó chưa tồn tại đâu
vs lại typedef *node NODEPTR mới đúng bác. cái nào biến NODEPTR rồi thì ko truyền vào hàm con trỏ NODEPTR nữa
p/s: không khuyến khích sài typedef, đọc hơi bị rối, nhờ bác giải thích giúp cái typedef đầu bài
Đây là bài tính đa thức trên danh sách liên kết đơn của mìn từng làm, không sài typedef tuy cũng có khó hiểu nhưng chắc ko khó đọc phần list đâu *ko biết cho vào code sao đây
Hàm pop lỗi chỗ freenode§ thành Freenode§ mà,m nói rồi mà.Với cả cái này là LK đơn mà
@ninedog cái
cái này chẳng để định dạng các biến trong chương trình thui à
chỉnh được rùi ,cảm ơn@Su_Su nhiều nha