Posted by : 86Gems 18 March 2014

Đề bài: Dùng danh sách liên kết kép để in ra các số theo chiều thứ tự vào trước ra trước và vào trước ra sau, tìm kiếm một phần tử trong danh sách và đưa ra vị trí.

#include <iostream>
using namespace std;
struct node
{
    int data;
    node *next;
    node *pre;
};
struct list
{
    node *first;
    node *last;
};

void init(list & l)
{
    l.first=NULL;
    l.last=NULL;
}

//Tao moi mot phan tu co thanh phan du lieu n
node *get_node(list &l)
{
   int n;
   node *p=new node();
   if(p==NULL)
       {
          cout<<" Khong cap phat duoc o nho! ";
       }
   else
       {
           cout<<"n= ";
           cin>>n;
           p->next=NULL;
           p->data=n;
           p->pre=NULL;
       }
    return p;
}

void chen_dau(list &l,node *p)
{
     if(l.first==NULL)
       {
          l.first=p;
          l.last=p;
       }
     else
       {
          p->next=l.first;
          l.first->pre=p;
          l.first=p;
       }
}

void creatalist_head(list &l)
{
    int n;
    node *p;
    cout<<" Nhap so phan tu cua danh sach la n= ";
    cin>>n;
    cout<<"Bat dau nhap "<<endl;
    for(int i=0;i<n;i++)
    {
        p=get_node(l);
        chen_dau(l,p);
    }
}
void in_xuoi(list l)
{
    node *p=l.first;
    cout<<"Danh sach vua nhap theo chuoi nguoc la: "<<endl;
    while (p!=NULL)
    {
        cout<<p->data<<"  ";
        p=p->next;
    }

}
void in_nguoc(list l)
{
    node *p=l.last;
    cout<<"Danh sach vua nhap theo chieu xuoi la: "<<endl;
    while (p!=NULL)
    {
        cout<<p->data<<"  ";
        p=p->pre;
    }

}
node *tim_kiem(list l, int x)
{
    node *p =l.first;
    int index;
    index=1;
    while (p!=NULL)
    {
        if(p->data==x)
            cout <<"Vi tri can tim la: "<<index <<endl;
        p=p->next;
        index++;
    }
    return(p);
}
int main()
{
    int k;
    list l;
    init(l);
    creatalist_head(l);
    in_xuoi(l);
    cout <<endl;
    in_nguoc(l);
    cout <<endl<<endl<<endl;
    cout <<"Nhap phan tu muon tim kiem: ";
    cin >>k;
    tim_kiem(l,k);
    return 0;
}

fb.com/snowblack93





Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Kiến thức tổng quan - Vòng Đá 5A - Powered by Blogger - Designed by SnowBlack -