typedef
tạo "loại" mới trong chương trình của bạn, vì vậy giá trị trả lại và loại tham số của các hàm đó chỉ là cấu trúc của bạn. Nó chỉ là viết tắt để sử dụng struct node
cho loại.
Nếu bạn đã tạo ra một nút mới, bạn có thể làm điều đó như thế này (bằng cách sử dụng loại):
LLIST *node = malloc(sizeof(LLIST));
node->data = 4;
node->next = someOtherItem;
list_add(node, 1)
Ngoài ra, với các nguyên mẫu hàm trong câu hỏi, bạn không thực sự cần những đôi con trỏ; kể từ khi dữ liệu trong cấu trúc của bạn chỉ là một int
, bạn có thể làm một cái gì đó giống như
LLIST *list_add(int data, int position);
thì list_add
chức năng sẽ xử lý việc phân bổ, sao chép int
vào struct và thêm nó vào danh sách liên kết.
Đặt tại một vị trí nhất định cũng đơn giản như thay đổi con trỏ next
trong nút trước nút đến địa chỉ của nút mới được phân bổ và con trỏ next
trong nút mới trỏ đến điểm tiếp theo các nút trước khi một trong những ban đầu được chỉ vào).
Hãy nhớ rằng (với phần còn lại của các nguyên mẫu hàm), bạn sẽ phải theo dõi các con trỏ tới mọi nút bạn tạo để xóa tất cả chúng.
Tôi không chắc mình hiểu cách chức năng tìm kiếm hoạt động. Toàn bộ điều này có thể được thực hiện tốt hơn rất nhiều. Bạn không nên có để cung cấp vị trí của nút khi bạn tạo nút đó (nếu bạn chỉ định số cao hơn số nút?), V.v.
Nguồn
2009-08-06 08:57:41
Về mặt kỹ thuật, bạn nên thực hiện 'malloc' cho từng mục trong danh sách, vì nó không phải là một danh sách đúng mà là một cấu trúc với một con trỏ ('* next') đến mục tiếp theo trong danh sách. Vì vậy, bạn làm một malloc riêng biệt khi tạo ra từng mục danh sách. – wizzwizz4