数据结构链表
数据存储在内存上可以不连续,可以将零散的内存联系起来,数据增删处理简单。
typedef struct DATALIST
{
int data;
PDataList next;
}DataList, *PDataList;
数据的插入方法:
bool trail_data_list(int num, PDataList head)
{
if(NULL == head)
{
printf("add data error\n");
return false;
}
PDataList p = head;
while(NULL != p->next)
{
p = p->next;
}
PDataList tem = calloc(1, sizeof(DataList));
tem->data = num;
tem->next = NULL;
p->next = tem;
return true;
}
bool head_data_list(int num, PDataList head)
{
if(NULL == head)
{
printf("addr error\n");
return false;
}
PDataList p = calloc(1, sizeof(DataList));
p->data = num;
p->next = head->next;
head->next = p;
return true;
}
- 排序插法
bool sort_data_list(int num, PDataList head)
{
if(NULL == head)
{
printf("addr error\n");
return false;
}
PDataList tem = calloc(1, sizeof(DataList));
tem->data = num;
PDataList p = head->next;
PDataList pos = p;
while(p != NULL)
{
if(num < p->data)
{
tem->next= p;
pos->next = tem;
return true;
}
pos = p;
p = p->next;
}
pos->next = tem;
tem->next = NULL;
}
bool delete_data_list(int num, PDataList head)
{
if(NULL == head)
{
printf("addr error\n");
return false;
}
PDataList pos = head->next;
PDataList p = pos->next;
while(NULL != p)
{
if(num == p->data)
{
pos->next = p->next;
p->next = NULL;
free(p);
return true;
}
pos = p;
p = pos->next;
}
printf("data not exist\n");
return false;
}