}
printf("\n");
}
struct list_operations list_ops = {
.init_list = init_list,
.sort_by_inc = sort_by_inc,
.print_list = print_list,
};
/*
* 注册结构体函数;
* pList ---> 传入链表
* num_nodes ---> 链表节点数
* name ---> 链表名字
*/
struct list_str *register_list(struct list_str *pList, int num_nodes, unsigned char *name)
{
pList = (struct list_str *)malloc(sizeof(struct list_str) * num_nodes);
pList->private_cnt = num_nodes;
pList->name = name;
pList->l_ops = &list_ops;
return pList;
}
/*
* 合并链表函数;
* pList1 ---> 传入链表1
* pList2 ---> 传入链表2
* pList3 ---> 传入链表3
*/
struct list_str *compera_list(struct list_str *pList1, struct list_str *pList2, struct list_str *pList3)
{
unsigned int i;
struct list_str *temp = pList3;
struct list_str *pRet = pList3;
/*
* 组合链表
*/
for (i = 0; i < pList1->private_cnt; i++)
{
pList3->values = pList1->values;
pList3++;
if (NULL != pList1->next) {
pList1++;
}
temp->next = pList3;
temp = temp->next;
}
for (i = 0; i < pList2->private_cnt; i++)
{
pList3->values = pList2->values;
pList3++;
if (NULL != pList2->next) {
pList2++;
} else {
break;
}
temp->next = pList3;
temp = temp->next;
}
temp->next = NULL;
/*
* 指针归位操作
*/
pList3 = pRet;
return pList3;
}
#include "compera_list.h"
/*
* 初始化链表节点函数;
* pList ---> 传入链表
* num_nodes ---> 链表节点数
*/
void init_list(struct list_str *pList, int num_nodes)
{
int i;
struct list_str *temp = pList;
printf("输入%s链表节点值:\n", pList->name);
for (i = 0; i < num_nodes; i++) {
printf("第%d个节点值: ", i+1);
scanf("%d", &pList->values);
pList->next = ++temp;
pList->private_cnt = num_nodes;
if (i != num_nodes - 1) {
pList++;
}
}
pList->next = NULL;
printf("\n");
}
/*
* 节点数据交换函数;
* i ---> 前级数据
* j ---> 后继数据
*/
void values_switch(int *i, int *j)
{
int temp;
temp = *i;
*i = *j;
*j = temp;
}
/*
* 递增排序函数;
* pList ---> 传入链表
* num_nodes ---> 链表节点数
*/
void sort_by_inc(struct list_str *pList, int num_nodes)
{
struct list_str *pTemp = pList;
while (pList->next) {
while (pTemp->next) {
pTemp = pTemp->next;
if (pList->values > pTemp->values) {
values_switch(&pList->values, &pTemp->values);
} else {
continue;
}
}
pList = pList->next;
pTemp = pList; // 重置pTemp指针指向单元
}
}
/*
* 打印节点数据函数;
* pList ---> 传入链表
*/
void print_list(struct list_str *pList)
{
unsigned int i;
printf("%s节点值打印:\n", pList->name);
for (i = 0; (pList != NULL) && (i < pList->private_cnt); i++) {
printf("第%d节点值为: %d\n", i+1, pList->values);
pList = pList->next;
}
printf("\n");
}
struct list_operations list_ops = {
.init_list = init_list,
.sort_by_inc = sort_by_inc,
.print_list = print_list,
};
/*
* 注册结构体函数;
* pList ---> 传入链表
* num_nodes ---> 链表节点数
* name ---> 链表名字
*/
struct list_str *register_list(struct list_str *pList, int num_nodes, unsigned char *name)
{
pList = (struct list_str *)malloc(sizeof(struct list_str) * num_nodes);
pList->private_cnt = num_nodes;
pList->name = name;
pList->l_ops = &list_ops;
return pList;
}
/*
* 合并链表函数;
* pList1 ---> 传入链表1
* pList2 ---> 传入链表2
* pList3 ---> 传入链表3
*/
struct list_