#include <stdio.h>
#define PRINT_FUNC printf("Call function: %s\n", __func__);
typedef struct Node
{
int data;
struct Node *next;
}Node, *NodePtr;
void input_node(Node *head)
{
PRINT_FUNC;
Node *p = head;
int x;
while(~scanf("%d", &x) && x)
{
Node *node = (NodePtr)malloc(sizeof(Node));
node->data = x;
node->next = NULL;
p->next = node;
p = node;
}
}
void output_node(Node *head)
{
PRINT_FUNC;
Node *p = head->next;
while(p)
{
printf("%d ", p->data);
p = p->next;
}
puts("");
}
void reverse_node(Node *head)
{
PRINT_FUNC;
Node *p = head->next;
head->next = NULL;
while(p)
{
Node *next = p->next;
p->next = head->next;
head->next = p;
p = next;
}
}
void free_node(Node *head)
{
PRINT_FUNC;
Node *node = head;
while(node)
{
Node *next = node->next;
free(node);
node = next;
}
}
int main()
{
Node *head = (NodePtr)malloc(sizeof(Node));
head->next = NULL;
input_node(head);
reverse_node(head);
output_node(head);
free_node(head);
}
带头结点的链表逆置
最新推荐文章于 2021-12-06 19:51:18 发布