任意长的整数加法
任意长的整数加法问题描述:设计一个程序实现两个任意长的整数的求和运算。
要求:
利用双向循环链表,设计一个实现任意长的整数进行加法运算的演示程序。要求输入和输出每四位一组,组间用逗号隔开。如:1,0000,0000,0000,0000。
要求用devc++5.0
2016-12-21 11:02
2016-12-21 12:05
2016-12-21 12:28
2016-12-21 15:19
2016-12-21 16:20
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct __tag_link
{
int data;
struct __tag_link *prec;
struct __tag_link *next;
} LinkNode, *LinkList;
LinkList createLinkList(char *str)
{
char *tmp;
LinkList p, s, head = NULL;
while (tmp = strsep(&str, ", "))
{
if (!strcmp(tmp, "")) continue;
if (head == NULL)
{
p = head = calloc(sizeof(LinkNode), 1);
p->data = atoi(tmp);
continue;
}
s = calloc(sizeof(LinkNode), 1);
s->data = atoi(tmp);
s->prec = p;
p->next = s;
p = s;
}
return head;
}
void destroyLinkList(LinkList l)
{
if (l)
{
if (l->next) destroyLinkList(l->next);
free(l);
}
}
int main()
{
char str[128] = "123, 4352, 3234 ,2353,2354";
// fgets(str, 128, stdin);
LinkList list = createLinkList(str);
destroyLinkList(list);
return 0;
}[此贴子已经被作者于2016-12-21 17:09编辑过]

2016-12-21 16:40
2016-12-21 16:46
2016-12-21 16:47
2016-12-22 10:49
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
typedef struct __tag_link
{
int data;
struct __tag_link *prec;
struct __tag_link *next;
} LinkNode, *LinkList;
LinkList createLinkList(char *str)
{
char *tmp = strtok(str, ",");
LinkList p, s, head = NULL;
p = head = calloc(sizeof(LinkNode), 1);
p->data = atoi(tmp);
while (tmp = strtok(NULL, ","))
{
s = calloc(sizeof(LinkNode), 1);
s->data = atoi(tmp);
s->prec = p;
p->next = s;
p = s;
}
return head;
}
void destroyLinkList(LinkList l)
{
if (l)
{
if (l->next) destroyLinkList(l->next);
free(l);
}
}
int main()
{
char str[128] = "123, 4352, 3234 ,2353,2354";
// fgets(str, 128, stdin);
LinkList list = createLinkList(str);
destroyLinkList(list);
return 0;
}[此贴子已经被作者于2016-12-22 14:42编辑过]

2016-12-22 14:40