📄 struct.cpp
字号:
#include "graphics.h"
// 建立一个新链表
LIST *create_list()
{
LIST *list = new LIST;
put_message(list == NULL, "错误,没有足够的内存。");
list->first = list->last = list->entry = NULL;
list->count = 0;
return list;
}
// 向链表中添加一个新节点
void add_point(LIST *list, void *data)
{
int a = 1;
list->entry = new LIST_POINT;
list->entry->data = data;
if (list->first == NULL)
{
list->entry->next = list->entry->prev = NULL;
list->first = list->last = list->entry;
}
else
{
list->last->next = list->entry;
list->entry->prev = list->last;
list->entry->next = NULL;
list->last = list->entry;
}
list->count++;
}
// 释放链表
void free_list(LIST **l)
{
LIST *list = *l;
if (list != NULL)
{
LIST_POINT *temp, *p;
while(list->first != NULL)
{
temp = list->first;
p = temp->next;
if (temp->data != NULL)
free(temp->data);
free(temp);
list->first = p;
}
list->first = list->last = NULL;
free(list);
*l = NULL;
}
}
// 将指向当前节点的指针移到链表最前面
void seek_to_first(LIST *list)
{
list->entry = list->first;
}
// 将指向当前节点的指针移到链表最后面
void seek_to_last(LIST *list)
{
list->entry = list->last;
}
// 将指向当前节点的指针向前移一个节点
void seek_to_prev(LIST *list)
{
list->entry = list->entry->prev;
}
// 将指向当前节点的指针向后移一个节点
void seek_to_next(LIST *list)
{
list->entry = list->entry->next;
}
// 获取当前数据
void *get_data(LIST *list)
{
if (list->entry != NULL)
return list->entry->data;
return NULL;
}
// 删除一个节点
void delete_point(LIST *list, LIST_POINT *p)
{
if (p == list->first)
{
list->first = list->first->next;
list->first->prev = NULL;
if (p->data != NULL)
delete p->data;
delete p;
list->entry = list->first;
}
else if (p == list->last)
{
list->last = list->last->prev;
list->last->next = NULL;
if (p->data != NULL)
delete p->data;
delete p;
list->entry = NULL;
}
else
{
LIST_POINT *v, *n;
v = p->prev;
n = p->next;
v->next = n;
n->prev = v;
if (p->data != NULL)
delete p->data;
delete p;
list->entry = n;
}
list->count--;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -