Untitled
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; }