Đây là bài mẫu nhập xuất danh sách liên kết đơn( số nguyên), theo dạng 3 file. Nếu bạn muốn viết theo 1 file thì xem Tại đây
* File khaibao.h
* File khaibao.h
#include"iostream"
using namespace std;
typedef struct tnode
{
int key;
struct tnode*pnext;
}node;
typedef struct tlist
{
node *head;node *tail;
}list;
node *getnode(int x);
void addhead(list &l,node*p);
void addtail(list &l,node*p);
void nhapds(list &l);
void xuatds(list l);
void huyds(list &l);
*file caidat.cpp
#include"khaibao.h"
node *getnode(int x)
{
node*t;
t=new node;
if(t==NULL)
{
cout<<"khong cap phat duoc";
exit(0);
}
t->key=x;
t->pnext=NULL;
return t;
}
void addhead(list &l,node*p)
{
if(l.head==NULL)
l.head=l.tail=p;
else
{
p->pnext=l.head;
l.head=p;
}
}
void addtail(list &l,node*p)
{
if(l.head==NULL)
l.head=l.tail=p;
else
{
l.tail->pnext=p;
l.tail=p;
}
}
void nhapds(list &l)
{
node *p;
int x,n;
l.head=l.tail=NULL;//khoi dong ds rong
cout<<"nhap vao so luong node: ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"nhap gia tri x: ";
cin>>x;
p=getnode(x);
addtail(l,p); //addhead(l,p);
}
}
void xuatds(list l)
{
node*i;
for(i=l.head;i!=NULL;i=i->pnext)
cout<<i->key<<"->";
cout<<"NULL";
}
void huyds(list &l)
{
node *p=l.head;
while(p!=NULL)
{
l.head=p->pnext;
delete p;
p=l.head;
}
}
*File main.cpp
#include"khaibao.h"
void main()
{
list l;
nhapds(l);
xuatds(l);
huyds(l);
}
* Bổ sung
Hàm xóa một node sau node q:
void XoáNodeSauNodeQ(LIST &l, NODE *q)
{
if(q==NULL || q==l.Tail)
return;
NODE *p=q->pNext;
q->pNext=p->pNext;
if(q->pNext==l.Tail)
l.Tail = q;
delete p;
}
Hàm xóa node cuối :
void XoáNodeTail(LIST &l)
{
NODE *p ;
if(l.Head==l.Tail)
{
delete l.Head;
l.Head = l.Tail = NULL;
return;
}
{
if(q==NULL || q==l.Tail)
return;
NODE *p=q->pNext;
q->pNext=p->pNext;
if(q->pNext==l.Tail)
l.Tail = q;
delete p;
}
Hàm xóa node cuối :
void XoáNodeTail(LIST &l)
{
NODE *p ;
if(l.Head==l.Tail)
{
delete l.Head;
l.Head = l.Tail = NULL;
return;
}
for(p=l.Head;p->pNext!=l.Tail;p=p->pNext);
p->pNext=NULL;
delete l.Tail;
l.Tail = p;
}
Bạn ơi,mình cần đọc một file ,sau đó đưa vào danh sách liên kết,rồi mới sắp xếp!Bạn có thể cho mình ý tưởng không?
ReplyDeleteTrước tiên cho mình hỏi là bạn có biết hàm đọc file chưa. nếu bạn đã biết cách đọc file thì rất dễ. bạn có thề dùng 2 cách. 1/ là bạn đọc file đó rồi ghi vào mảng 1 chiều. sau đó duyệt dòng for nhập từ phần tử của mảng vào danh sách liên kết. 2/ là bạn đọc lần lượt từng phần tử trong file,đọc dc phần tử nào thì nhập phần tử đó vào danh sách liên kết
Delete