Untitled
unknown
plain_text
3 years ago
2.1 kB
7
Indexable
#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;
}Editor is loading...