C 新的链表包含上一个链表
我有表示整数的链表(每个节点是整数中的一个数字)。当我尝试打印第二个或第三个链表时,在第二个链表中打印第二个和第一个链表,在第三个链表中,同时打印第三个、第二个和第一个链表,等等。我缺少什么?欢迎任何帮助。。。。 我使用的每个节点的结构是:C 新的链表包含上一个链表,c,linked-list,C,Linked List,我有表示整数的链表(每个节点是整数中的一个数字)。当我尝试打印第二个或第三个链表时,在第二个链表中打印第二个和第一个链表,在第三个链表中,同时打印第三个、第二个和第一个链表,等等。我缺少什么?欢迎任何帮助。。。。 我使用的每个节点的结构是: typedef struct node { int digit; struct node *next; } listnode_t; 例如,这是我的主要任务 主要 我的输出是 Give a digit: 1 Give a digit: 7 Give a di
typedef struct node {
int digit;
struct node *next;
} listnode_t;
例如,这是我的主要任务
主要
我的输出是
Give a digit: 1
Give a digit: 7
Give a digit: 9
Give a digit: 5
17
End of printing number
9517
End of printing number
10249517
End of printing nunmber
我使用的三种方法是:
打印编号(列表节点头)
在列表头上取一个指针并打印元素
void print_number(listnode_t *head){
listnode_t *anode = head;
if (anode == NULL){
printf("The list is empty\n");
}
else {
while(anode != NULL){
printf("%d",anode->digit);
anode = anode->next;
}
printf("\n");
printf("End of printing the number\n");
}
}
listnode\u t*创建\u列表(int numdigits)
请正确格式化您的代码。它几乎不可读,不需要帮助。您需要将
head1
和head2
初始化为NULL
。谢谢@IanAbbott,现在可以按我的要求工作了。我知道我错过了一些简单的东西。再次感谢!请正确格式化您的代码。它几乎不可读,不需要帮助。您需要将head1
和head2
初始化为NULL
。谢谢@IanAbbott,现在可以按我的要求工作了。我知道我错过了一些简单的东西。再次感谢!
void print_number(listnode_t *head){
listnode_t *anode = head;
if (anode == NULL){
printf("The list is empty\n");
}
else {
while(anode != NULL){
printf("%d",anode->digit);
anode = anode->next;
}
printf("\n");
printf("End of printing the number\n");
}
}
listnode_t *create_list(int numdigits){
listnode_t *ptr2;
listnode_t *head2;
int i;
int num[numdigits];
for(i=0;i<numdigits;i++){
do{
printf("Give a digit: ");
scanf("%d",&num[i]);
} while (num[i]>9 || num[i]<0);
}
for(i=numdigits-1;i>=0;i--){
ptr2 = (listnode_t*)malloc(sizeof(listnode_t));
if (ptr2 == NULL){
printf("\n Node creation failed \n");
return NULL;
}
ptr2->digit = num[i];
ptr2->next = NULL;
ptr2->next = head2;
head2 = ptr2;
}
return ptr2;
}
listnode_t *int_to_list(int num) {
listnode_t *ptr1;
listnode_t *head1;
int numOfdigits = countdigits(num);//counts the number of digits of integer
//num
int k = numOfdigits;
int digits[numOfdigits];
while (numOfdigits--) {
digits[numOfdigits]=num%10;
num/=10;
}
int i;
for(i=k-1;i>=0;i--){
ptr1 = (listnode_t*)malloc(sizeof(listnode_t));
if (ptr1 == NULL){
printf("\n Node creation failed \n");
return NULL;
}
ptr1->digit = digits[i];
ptr1->next = NULL;
ptr1->next = head1;
head1 = ptr1;
}
return ptr1;
}