01/10/2018, 00:31
Danh sách liên kết đơn mở rộng
Danh sách liên kết đơn mở rộng: Lập danh
Mỗi Node của danh sách cha sẽ chứa 2 con trỏ trỏ đến vị trí đầu và cuối của một danh sách liên kết đơn khác.
DSLK con: có 2 trường : trường thông tin , và con trỏ trỏ đến vị trí tiếp theo.
DSLK cha: có 4 trường : trường thông tin ,con trỏ trỏ đến nút tiếp theo và 2 con trỏ trỏ đến danh sách liên kết con.
Mong cao nhân nào đi qua chỉ giáo. Em làm k nổi.
//Khao bao danh sach và khoi tao
struct line{
int dong;
struct line *next;
};
struct node {
char DATA[30];
struct node *n;
struct line *dau;
struct line *cuoi;
};
struct node* head=NULL;
Thêm phần tử vào danh sách
Thông tin danh sách con em lấy từ một mảng int
struct line *insertDong(int a){
struct line *p, *q;
q=(struct line*)malloc(sizeof(struct line));
q->dong=a;
if(head->dau==NULL){
head->dau=q;
q->next=NULL;
head->cuoi=q;
return q;
}
else{
p=head->dau;
while(p->next!=NULL) p=p->next;
p->next=q;
q->next=NULL;
head->cuoi=q;
return q;
}
}
void listDong(int a[],int j){
int i=0;
for(i=0; i<j; i++){
insertDong(a[i]);
}
}
struct node *AddTail(char x[30], int a[],int j){
struct node *p, *q;
q=(struct node*)malloc(sizeof(struct node));
strcpy(q->DATA, x);
if(head==NULL){
head=q;
q->n=NULL;
listDong(a,j);
return (q);
}
else{
p=head;
while(p->n!=NULL) p=p->n;
p->n=q;
q->n=NULL;
listDong(a,j);
return q;
}
}
Xuất danh sách
void xuat(void){
printf("
Danh sach cac phan tu cua:
");
struct node *p =head;
while(p!=NULL){
printf("
%s
",p->DATA);
p=p->n;
}
while(p->dau!=NULL){
printf("%d",p->dau->dong);
p->dau=p->dau->next;
}
}
Bài liên quan