{
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;
}
main.c:
[cpp]
#include "compera_list.h"
/*
* 声明要使用的全局变量:
* *list_A;
* *list_B;
* *list_C;
*/
static struct list_str *list_A;
static struct list_str *list_B;
static struct list_str *list_C;
int main(int argc, char *argv[])
{
unsigned int size_A;
unsigned int size_B;
/*
* size_A: 指定list_A长度
* size_B: 指定list_B长度
*/
printf("输入A链表与B链表的长度(如2,3):");
scanf("%d,%d", &size_A, &size_B);
printf("\n");
/*
* 分配指针空间与构建list操作函数成员
*/
list_A = register_list(list_A, size_A, "list_A");
list_B = register_list(list_B, size_B, "list_B");
list_C = register_list(list_C, (size_A + size_B), "list_C");
/*
* 初始化节点值
*/
list_A->l_ops->init_list(list_A, size_A);
list_B->l_ops->init_list(list_B, size_B);
/*
* 按递增形式排序
*/
list_A->l_ops->sort_by_inc(list_A, size_A);
list_B->l_ops->sort_by_inc(list_B, size_B);
/*
* 组合list_A与list_B
*/
list_C = compera_list(list_A, list_B, list_C);
/*
* 按递增形式排序
*/
list_C->l_ops->sort_by_inc(list_C, (size_A + size_B));
/*
* 打印节点内容
*/
list_A->l_ops->print_list(list_A);
list_B->l_ops->print_list(list_B);
list_C->l_ops->print_list(list_C);
/*
* 释放指针空间
*/
free(list_A);
free(list_B);
free(list_C);
return 0;
}
#include "compera_list.h"
/*
* 声明要使用的全局变量:
* *list_A;
* *list_B;
* *list_C;
*/
static struct list_str *list_A;
static struct list_str *list_B;
static struct list_str *list_C;
int main(int argc, char *argv[])
{
unsigned int size_A;
unsigned int size_B;
/*
* size_A: 指定list_A长度
* size_B: 指定list_B长度
*/
printf("输入A链表与B链表的长度(如2,3):");
scanf("%d,%d", &size_A, &size_B);
printf("\n");
/*
* 分配指针空间与构建list操作函数成员
*/
list_A = register_list(list_A, size_A, "list_A");
list_B = register_list(list_B, size_B, "list_B");
list_C = register_list(list_C, (size_A + size_B), "list_C");
/*
* 初始化节点值
*/
list_A->l_ops->init_list(list_A, size_A);
list_B->l_ops->init_list(list_B, size_B);
/*
* 按递增形式排序
*/
list_A->l_ops->sort_by_inc(list_A, size_A);
list_B->l_ops->sort_by_inc(list_B, size_B);
/*
* 组合list_A与list_B
*/
list_C = compera_list(list_A, list_B, list_C);
/*
* 按递增形式排序
*/
list_C->l_ops->sort_by_inc(list_C, (size_A + size_B));
/*
* 打印节点内容
*/
list_A->l_ops->print_list(list_A);
list_B->l_ops->print_list(list_B);
list_C->l_ops->print_list(list_C);
/*
* 释放指针空间
*/
free(list_A);
free(list_B);
free(list_C);
return 0;
}
在娴熟的技术,都源于不断的训练。