0
У меня есть функция ll() для создания связанного списка следующим образом. Моя программа требует двух связанных списков. Можно ли повторно использовать эту функцию, чтобы я мог иметь два связанных списка, например head1 и head2?создать две связанные списки, используя одну функцию
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int data;
struct node* link;
}Node;
Node* head = NULL;
Node* previous = NULL;
int main(void)
{
ll();
print();
return 0;
}
int ll()
{
int data = 0;
while(1)
{
printf("Enter data, -1 to stop : ");
scanf("%d",&data);
if(data == -1)
break;
addtoll(data);
}
}
int addtoll(int data)
{
Node* ptr = NULL;
ptr = (Node*)malloc(sizeof(Node));
ptr->data = data;
ptr->link = NULL;
if(head == NULL)
head = ptr;
else
previous->link = ptr;
previous = ptr;
}
int print()
{
printf("Printing linked list contents : ");
Node* ptr = head;
while(ptr)
{
printf("%d ",ptr->data);
ptr = ptr->link;
}
printf("\n");
}
Есть ли лучший способ, чем делать что-то вроде
main()
{
ll(1);
ll(2);
}
int ll(int serial)
{
if(serial == 1)
use head1 everywhere in this function
else if(serial == 2)
use head2 everywhere in this function
}
Да, вы можете использовать ту же функцию (если она написана правильно) для создания любого количества списков. – haccks
'll' - очень плохое имя для чего угодно. Он может читаться как «11» (одиннадцать) или «II» («глаз»). Или любая их комбинация. –