mirror of
https://gitee.com/apaki/cmake_demo.git
synced 2025-05-17 20:01:36 +08:00
105 lines
1.7 KiB
C
105 lines
1.7 KiB
C
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
typedef struct list_t
|
|
{
|
|
uint8_t data;
|
|
struct list_t *next;
|
|
} list_t;
|
|
|
|
void list_init(struct list_t *list)
|
|
{
|
|
list->data = 0;
|
|
list->next = NULL;
|
|
}
|
|
|
|
void list_add(struct list_t *list, uint8_t data)
|
|
{
|
|
struct list_t *p = NULL;
|
|
p = list;
|
|
while (p->next != NULL)
|
|
{
|
|
p = p->next;
|
|
if (p->data == data)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
p->next = (struct list_t *)malloc(sizeof(struct list_t));
|
|
p->next->data = data;
|
|
p->next->next = NULL;
|
|
return;
|
|
}
|
|
|
|
void list_print(struct list_t *list)
|
|
{
|
|
struct list_t *p = NULL;
|
|
p = list;
|
|
while (p->next != NULL)
|
|
{
|
|
printf("%02d\n", p->data);
|
|
p = p->next;
|
|
if (p->next == NULL)
|
|
{
|
|
printf("%02d\n", p->data);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void list_free(struct list_t *list)
|
|
{
|
|
struct list_t *p = NULL;
|
|
p = list;
|
|
while (p->next != NULL)
|
|
{
|
|
p = p->next;
|
|
free(p->next);
|
|
p->next = NULL;
|
|
if (p->next == NULL)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void list_demo(void)
|
|
{
|
|
struct list_t list;
|
|
list_init(&list);
|
|
for(uint32_t i = 0; i < 10; ++i)
|
|
{
|
|
list_add(&list, i);
|
|
}
|
|
list_print(&list);
|
|
}
|
|
|
|
|
|
void main(int arg, char *argv[])
|
|
{
|
|
#if 0
|
|
uint32_t i = 0;
|
|
for (i = 0; i < 10; ++i)
|
|
{
|
|
printf("%02d\n", i);
|
|
}
|
|
printf("\n");
|
|
|
|
printf("Hello World!\n");
|
|
#else
|
|
// struct list_t list;
|
|
// list_init(&list);
|
|
// list_add(&list, 1);
|
|
// list_add(&list, 2);
|
|
// list_add(&list, 3);
|
|
// list_add(&list, 4);
|
|
|
|
// list_print(&list);
|
|
|
|
list_demo();
|
|
#endif
|
|
}
|