头插法:readlisthead
尾插法:readlisttail
#include<stdio.h>
#include<stdlib.h>
struct ListNode {
int data;
ListNode* next;
};
ListNode* readlisthead()
{
struct ListNode head,tail,p;
head = (struct ListNode)(malloc(sizeof(ListNode)));
head->next = NULL;
tail = NULL;
while (1)
{
p = (ListNode)(malloc(sizeof(ListNode)));
scanf_s("%d", &p->data);
if (p->data == -1)
break;
p->next = tail;
tail = p;
head->next = tail;
}
return head->next ;
}
ListNode readlisttail()
{
struct ListNode* head, * tail, * p;
head = NULL;
tail = NULL;
while (1)
{
p = (struct ListNode*)(malloc(sizeof(struct ListNode)));
scanf_s("%d", &p->data);
if (p->data == -1)
break;
p->next = NULL;
if (head == NULL)
head = p;
else
tail->next = p;
tail = p;
}
return head;
}
void print(ListNode* L)
{
while (L)
{
printf("%d ", L->data);
L = L->next;
}
}
int main()
{
struct ListNode* L = readlisthead();
print(L);
return 0;
}
头插法:每次都从head处插入数据,每插入一个tail往前移动一个节点,由此可知,头插法输入时逻辑顺序与物理顺序刚好相反
尾插法:每次都从tail插入数据,每插入一个tail往后移一个节点
链表的头插法和尾插法
最新推荐文章于 2024-06-19 15:06:38 发布