
1.我们需要创建两个链表
typedef struct linkedList
{
int data;
struct linkedList* next;
}VARIABLE,*POINTER;
//创建链表头
POINTER createListHead()
{
POINTER list = (POINTER)malloc(sizeof(VARIABLE));
assert(list);
list->data = 0;
list->next = NULL;
return list;
}
//创建节点
POINTER createNode(int data)
{
POINTER list = (POINTER)malloc(sizeof(VARIABLE));
assert(list);
list->data = data;
list->next = NULL;
return list;
}
//插入节点
void insertOnde(POINTER list, int data)
{
POINTER list1 = createNode(data);
assert(list1);
list1->next = list->next;
list->next = list1;
}
int main()
{
POINTER list1 = createListHead();
POINTER list2 = createListHead();
for (int i = 0; i < 3; i++)
{
int index = 0;
printf("请输入3次list1链表值:");
scanf("%d", &index);
while (getchar() != '\n');
insertOnde(list1, index);
}
for (int i = 0; i < 3; i++)
{
int index = 0;
printf("请输入3次list2链表值:");
scanf("%d", &index);
while (getchar() != '\n');
insertOnde(list2, index);
}
}
2.读取两个链表的值将值合并成一个数之后拆分放到一个数组里
//两个链表相加
void theTwoListAdd(POINTER list1, POINTER list2)
{
int value1[3];
int value2[3];
POINTER pmove1 = list1->next;
POINTER pmove2 = list2->next;
int v1 = 0;
int v2 = 0;
while (pmove1->next != NULL)
{
value1[v1] = pmove1->data;
pmove1 = pmove1->next;
v1++;
}
value1[v1] = pmove1->data;
while (pmove2->next != NULL)
{
value2[v2] = pmove2->data;
pmove2 = pmove2->next;
v2++;
}
value2[v2] = pmove2->data;
int num1 = 0;
int num2 = 0;
num1 = value1[0] * 100 + value1[1] * 10 + value1[2];
num2 = value2[0] * 100 + value2[1] * 10 + value2[2];
int value = num1 + num2;
int result[3];
int num = 0;
for (int i = 2; i >= 0; i--)
{
num = value % 10;
result[i] = num;
value = value / 10;
}
printf("[%d,%d,%d]", result[0], result[1], result[2]);
}
题目来源与力扣,如有侵权联系删除
3285

被折叠的 条评论
为什么被折叠?



