#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
typedef struct my_test {
int data;
struct my_test *prev;
struct my_test *next;
} T;
T *head = NULL;
//双向链表
int add1(T *head, T *node)
{
if (!head->next) {
node->next = head->next;
node->prev = head;
head->next = node;
return (0);
}
node->prev = head;
node->next = head->next;
head->next->prev = node;
head->next = node;
return (0);
}
//双向循环链表
int add(T *head, T *node)
{
if (!head->next) {
node->next = head;
node->prev = head;
head->next = node;
head->prev = node;
return (0);
}
node->prev = head;
node->next = head->next;
head->next->prev = node;
head->next = node;
return (0);
}
void print(T *head)
{
T *tmp = head;
while (tmp) {
sleep(1);
printf("%d\n", tmp->data);
tmp = tmp->prev;
}
}
int main(void)
{
int i = 0;
head = (T *)malloc(sizeof(T));
if (NULL == head) {
perror("malloc");
exit(EXIT_FAILURE);
}
head->next = NULL;
head->prev = NULL;
head->data = 10;
for (i = 0; i < 10; i++) {
T *node = (T *)malloc(sizeof(T));
if (NULL == node) {
perror("malloc");
exit(EXIT_FAILURE);
}
node->next = NULL;
node->prev = NULL;
node->data = i;
add(head, node);
}
print(head);
return (0);
}
双向链表的建立
最新推荐文章于 2023-10-14 18:48:07 发布