List là 1 cấu trúc dữ liệu mà nó lưu giữ thông tin tổng quát về vị trí của phần tử tiếp theo. Các phần tử của “single linked list ” chỉ có vị trí tiếp theo. Trong C con trỏ được sử dụng để trỏ tới phần tử tiếp theo. Array(mảng): ta có thể truy nhập ở bất kì vị trí nào trong mảng ngay lập tức. Linked list: ta có thể thay đổi số phần tử dữ liệu của nó. | Chủ đề Sự tự tham chiếu của cấu trúc trong C Cấu trúc dữ liệu danh sách liên kết đơn (single linked list), danh sách liên kết đôi (double linked list): Khởi tạo, thi hành. Thuật toán quét dữ liệu Thuật toán chèn, xoá. Sự tự tham chiếu của cấu trúc 1 hoặc nhiều thành phần của nó là con trỏ tới chính nó. struct list { char data; struct list *link; }; list item1, item2, item3; ‘a’; ‘b’; ‘c’; ; a c b Thi hành list trong C List là 1 cấu trúc dữ liệu mà nó lưu giữ thông tin tổng quát về vị trí của phần tử tiếp theo. Các phần tử của “single linked list ” chỉ có vị trí tiếp theo Trong C con trỏ được sử dụng để trỏ tới phần tử tiếp theo. Array(mảng): ta có thể truy nhập ở bất kì vị trí nào trong mảng ngay lập tức. Linked list: ta có thể thay đổi số phần tử dữ liệu của nó. Khai báo linked list typedef . elementtype;//kiểu dữ liệu phần tử typedef struct node{ elementtype element; node* next; }; node* root; node* cur; Hoặc: . | Chủ đề Sự tự tham chiếu của cấu trúc trong C Cấu trúc dữ liệu danh sách liên kết đơn (single linked list), danh sách liên kết đôi (double linked list): Khởi tạo, thi hành. Thuật toán quét dữ liệu Thuật toán chèn, xoá. Sự tự tham chiếu của cấu trúc 1 hoặc nhiều thành phần của nó là con trỏ tới chính nó. struct list { char data; struct list *link; }; list item1, item2, item3; ‘a’; ‘b’; ‘c’; ; a c b Thi hành list trong C List là 1 cấu trúc dữ liệu mà nó lưu giữ thông tin tổng quát về vị trí của phần tử tiếp theo. Các phần tử của “single linked list ” chỉ có vị trí tiếp theo Trong C con trỏ được sử dụng để trỏ tới phần tử tiếp theo. Array(mảng): ta có thể truy nhập ở bất kì vị trí nào trong mảng ngay lập tức. Linked list: ta có thể thay đổi số phần tử dữ liệu của nó. Khai báo linked list typedef . elementtype;//kiểu dữ liệu phần tử typedef struct node{ elementtype element; node* next; }; node* root; node* cur; Hoặc: typedef . elementtype; struct node{ elementtype element; struct node* next; }; struct node* root; struct node* cur; Cấp phát bộ nhớ cho 1 phần tử Ta cần cấp phát 1 khối bộ nhớ cho mỗi node(phần tử) qua 1 con trỏ. struct node * new; new = (struct node*) malloc(sizeof(structnode)); new->element = new->next = null; • new->addr có nghĩa là (*new).addr. • “con trỏ biến cho bản ghi cấu trúc” ->”tên trường (field)” Exercise Ta thiết kế “address list”(danh sách địa chỉ) cho các số điện thoại di động . Phải tạo 1 bản ghi cấu trúc gồm có name, phone number và email address. Phải tạo 1 chương trình có thể giải quyết với số lượng dữ liệu tuỳ ý. Exercise (tiếp) Tạo 1 danh sách liên kết đơn chứa danh sách phone address. Viết 1 hàm insert 1 phần tử vào list ngay sau phần tử hiện thời, sử dụng nó để thêm node vào list Viết 1 hàm duyệt toàn bộ list và in ra thông tin chứa trong nó. Viết hàm xoá 1 node khỏi list. Gợi ý Bạn có thể tổ chức các phần tử và cấu trúc dữ liệu theo bản ghi cấu trúc .