Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
2.1 kB
1
Indexable
Never
#include <stdio.h>
#include <stdlib.h>
//khai bao linked list
typedef struct Node {
    int data;
    struct Node *next; // con tro dung de lien ket cac node voi nhau
} NODE;


typedef struct list {
    NODE *head;// node quan li dau danh sach
    NODE *tail;// node quan li cuoi danh sach

} LIST;

//Khoi tao linked list

void KhoiTao()
{
    LIST l;
    l.head = NULL;
    l.tail = NULL; 
    //tro den NULL vi chua co phan tu
}
//Khoi tao 1 node(truyen du lieu vao node)

NODE *KhoiTaoNode(int x)//x: `kieu du lieu so nguyen
{
    NODE *p = (NODE *)malloc(sizeof(NODE));//cap phat vung nho cho p
    if (p == NULL)
    {
        printf("Khong du bo nho de cap phat");
        return NULL;
    }
    p->data = x;
    p->next = NULL;
    return p;//tra ve NODE p vua khoi tao
}

// Them Node vao dau danh sach lien ket
void ThemVaoDau(LIST l, NODE *p){
    // Danh sach dang rong
    if (l.head == NULL){
        l.head = l.tail = p;
    }
    else 
    {
        p->next = l.head;//cho con tro cua node can them la node p lien ket den node dau (head)
        l.head = p;//cap nhat lai head chinh la node p
    }
}

//Ham them node p vao cuoi danh sach lien ket

void ThemVaoCuoi(LIST l, NODE *p){
    // Danh sach dang rong
    if (l.head == NULL){
        l.head = l.tail = p;
    }
    else 
    {
        l.tail->next = p;//cho con tro cua node can them la node p lien ket den node dau (head)
        l.tail = p;//cap nhat lai head chinh la node p
    }
}
//Ham xuat ds linked list
void XuatDS(LIST l){
    NODE *k = l.head;
    while(k != NULL){
        printf("%d\n",k->data);
        k = k->next;
    }
}

//Ham nhap danh sach lien ket
int main(){
    LIST l ;
    KhoiTao(l);
    int n;
    printf("So luong Node: ");scanf("%d",&n);
    for(int i = 1; i <= n; i++){
        int x;
        scanf("%d",&x);
        NODE *p = KhoiTaoNode(x);//Khoi tao NODE so nguyen x
        ThemVaoDau(l, p);//them vao dau ds lien ket don
    }
    XuatDS(l);
    return 0;
}