整数を単一リンクリストとして表す関数をCで記述すると、負の整数のマイナス記号は表示されません。私は何が間違っているのですか?アルゴリズムの改善点と、それを解決するための最速の方法を提案できますか?ここでCnoob。
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char info;
struct Node *link;
} Node;
Node* add_front (Node* head, char info)
{
Node* t = malloc(sizeof(struct Node));
t->info = info;
t->link = head;
return t;
}
void display (Node* head)
{
while(head != NULL) {
printf("%d ", head->info);
head = head->link;
}
}
Node* number_list (int n)
{
int digit, minus = (n < 0 ? 1 : 0);
Node* list = NULL;
if (minus) n *= -1;
do {
digit = n % 10;
list = add_front(list, (char)digit);
n = n / 10;
} while(n > 0);
if (minus) add_front(list, '-');
return list;
}
int main()
{
int n = -1024;
Node* l = number_list(n);
display(l);
return 0;
}