对于单链表有很多考题。
1、反转一个单链表,分别以迭代和递归的形式实现。链表结构如下:
typedef struct node LinkNode;
struct node{
int data;
LinkNode *next;
};
迭代的实现形式:
迭代实现的思路是:把一个带头节点的单链表讲头部后面的切断,讲后面的表的指针赋给一个临时指针。循环把该临时指针指向的变量插到头结点后面。
代码实现如下:
LinkNode *reverse_link(LinkNode *head)
{
LinkNode *p, *q, *temp;
p = head->next;
q = p->next;
p->next = NULL;
while (p != NULL)
{
temp = q;
q = q->next;
temp->next = p;
head->next = temp;
p = head->next;
}
return head;
}