mình nghĩ bạn code như vậy quả thực rất rối --->> đọc rô chỉ có die thui àh
dưới đây là code của mình bạn tham khảo nhé . Chương trình được code thành nhiều hàm với các chức năng để có thể dễ dàng sử dụng !!!
Code:
#include "stdio.h"
#include "conio.h"
struct NODE
{
int Info;
NODE *Next;
};
struct LIST
{
NODE *Head;
NODE *Tail;
};
NODE* GetNode(int x)
{
NODE *p = new NODE;
if(p==NULL)
return NULL;
p->Info =x;
p->Next =NULL;
return p;
}
void Init(LIST &L)
{
L.Head = L.Tail =NULL;
}
void AddTail(LIST &l, NODE *p)
{
if(l.Head == NULL)
{
l.Head = p;
l.Tail = l.Head;
}
else
{
l.Tail->Next = p;
l.Tail = p;
}
}
void ProcessList(LIST l)
{
NODE *p;
p = l.Head;
while(p!=NULL)
{
printf(" %d",p->Info);
p=p->Next;
}
}
void DeleteTail(LIST &l)
{
NODE *p =l.Head;
NODE *q = new NODE;
for(;p!=NULL;p=p->Next)
{
NODE *temp = p->Next;
if(temp->Next ==NULL)
{
q=p;
p=p->Next;
}
}
l.Tail = q;
q->Next = NULL;
delete p;
}
void NhapDanhSach(LIST &l)
{
int n;
printf("Nhap so NODE cua ds :");
scanf("%d",&n);
Init(l);
for(int i=0;i<n;i++)
{
int x;
printf("\nNODE[%d] = ",i+1);
scanf("%d",&x);
NODE *p = GetNode(x);
AddTail(l,p);
}
}
void main()
{
printf("nhap dslk :\n");
LIST l;
NhapDanhSach(l);
printf("\ndanh sach moi dau la : ");
ProcessList(l);
printf("\nDanh sach sau khi xoa phan tu cuoi la :\n");
DeleteTail(l);
ProcessList(l);
printf("\n");
getch();
}
ở đây bạn có thể hoàn toàn thay thế thông tin của lớp cho tương ứng với yêu cầu của bạn !!! ví dụ thay trường int Info thành char *sName --> tên người .
hoặc có thể thêm trường đó vô node của dslk
chúc bạn học tốt