단일 체인 테이블 (헤드)
#include <stdio.h>
#include <stdlib.h>
typedef int elem_t;
struct node_info {
elem_t data;
struct node_info *next;
};
static void init_head(struct node_info *head)
{
head->data = 0;
head->next = head;
}
static void list_add(struct node_info *head,
elem_t data)
{
struct node_info *node = (struct node_info*)malloc(sizeof(struct node_info));
node->data = data;
node->next = head->next;
head->next = node;
}
static void list_add_tail(struct node_info *head,
elem_t data)
{
struct node_info *node = (struct node_info*)malloc(sizeof(struct node_info));
node->data = data;
// .? 〃??.? ..?
struct node_info *cur = head->next;
for (; cur->next != head; cur = cur->next) {}
node->next = head;
cur->next = node;
}
static void list_for_each(struct node_info *head,
void (*todo)(struct node_info *))
{
struct node_info *cur = head->next;
for (; cur != head; cur = cur->next) {
todo(cur);
}
}
static void list_del(struct node_info *head,
elem_t data)
{
struct node_info *back = head;
struct node_info *cur = head->next;
for (; cur != head;) {
if (cur->data == data) {
back->next = cur->next;
free(cur);
cur = back->next;
} else {
back = cur;
cur = cur->next;
}
}
}
void list_destroy(struct node_info *head)
{
struct node_info *cur = head->next;
for (; cur != head; cur = head->next) {
head->next = cur->next;
free(cur);
}
}
#define LIST_LEN 10
static void print(struct node_info *node)
{
printf("%d ", node->data);
}
int main()
{
struct node_info head;
init_head(&head);
size_t i = 0;
for (i = 0; i < LIST_LEN; i++) {
list_add(&head, i);
list_add_tail(&head, i);
}
list_del(&head, 0);
list_for_each(&head, print);
printf("
");
list_destroy(&head);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.