链表反转:
数据结构如下:
typedef struct _node
{
int data;
struct _node *next;
} node;
完成函数 node *reverse(node *head),head为不带头节点的链表的首部。
node *reverse(node *head)
{
node *tmp = null; // 缓冲变量
node *newhead = null; // 反转后的新头节点
if ( head==null ) return head; // 空链表的情况
if ( head->next==null ) return head; // 链表只有一个节点的情况
while ( head ) // 判断有没有移动到最后
{
tmp=head->next; // 临时记录下一个节点
head->next = newhead; // 把原来链表中的节点放到新的链表的首部
newhead = head;
head = tmp;
} // end of while
return newhead;
} // end of reverse
数据结构如下:
typedef struct _node
{
int data;
struct _node *next;
} node;
完成函数 node *reverse(node *head),head为不带头节点的链表的首部。
node *reverse(node *head)
{
node *tmp = null; // 缓冲变量
node *newhead = null; // 反转后的新头节点
if ( head==null ) return head; // 空链表的情况
if ( head->next==null ) return head; // 链表只有一个节点的情况
while ( head ) // 判断有没有移动到最后
{
tmp=head->next; // 临时记录下一个节点
head->next = newhead; // 把原来链表中的节点放到新的链表的首部
newhead = head;
head = tmp;
} // end of while
return newhead;
} // end of reverse