我是个新手,需要一些大学作业(job)代码的帮助. 我正在try 用C语言编写将 node 插入到列表末尾的代码,但创建新 node 的操作不起作用.
首先,这是我在作业(job)中收到的代码:
typedef struct listNode {
int* dataPtr;
struct listNode* next;
}ListNode;
typedef struct list
{
ListNode* head;
ListNode* tail;
}List;
并且:
List getList()
{
List res;
int size, num, i;
makeEmptyList(&res);
printf("Please enter the number of items to be entered:\n");
scanf("%d", &size);
printf("Please enter the numbers:\n");
for(i = 0; i < size; i++)
{
scanf("%d", &num);
insertDataToEndList(&res, num);
}
return res;
}
void main()
{
List lst1, lst2, mergedList;
lst1 = getList();
lst2 = getList();
mergedList = merge(lst1,lst2);
printf("Merged list:\n");
printList(&mergedList);
freeList(&lst1);
freeList(&lst2);
freeList(&mergedList);
}
下面是我try 编写的insertDataToEndList
个代码:
// Add Node to end list
void insertDataToEndList(List* lst, int data)
{
ListNode* newTail;
newTail = createNewListNode(&data, NULL);
insertNodeToEndList(lst, newTail);
}
ListNode* createNewListNode(int* data, ListNode* next)
{
ListNode* res;
res = (ListNode*)malloc(sizeof(ListNode));
res->dataPtr = data;
res->next = next;
return res;
}
void insertNodeToEndList(List* lst, ListNode* tail)
{
if (isEmptyList(lst) == true)
lst->head = lst->tail = tail;
else
{
lst->tail->next = tail;
lst->tail = tail;
}
tail->next = NULL;
}
问题是,当我打印已经输入的两个列表时,打印值根本不是我输入的值.