您的位置:首页 > 其它

单链表逆置

2015-08-26 09:50 141 查看
<pre name="code" class="cpp">#include<iostream>
#include<stdio.h>
using namespace std;
typedef struct node
{
int data;
struct node *next;
};
node *create()//创建单链表
{
node *p,*s;
int x,cycle=1;
node *head = (node*)malloc(sizeof(node));
p = head;
while(cycle)
{
scanf("%d",&x);
if(x!=0)//缺点:x=0时,无法输出
{
s = (node *)malloc(sizeof(node));
s->data = x;
p->next = s;
p = s;
}
else cycle = 0;
}
head = head->next;
p->next = NULL;
return head;
}
node *reverse(node *head)//单链表逆置
{
node *reverseHead = NULL;
node *pnode = head;
node *prev = NULL;
while(pnode != NULL)
{
node *pnext = pnode->next;
if(pnext == NULL)
reverseHead = pnode;
pnode->next = prev;
prev = pnode;
pnode = pnext;
}
return reverseHead;
}
void main()
{
node *q , *p,*r;
q = create();
/*while(q)
{
printf("%d ",q->data);
p = q->next;
free(q);
q = p;
}
*/
p = reverse(q);

while(p)//输出单链表
{
printf("%d ",p->data);
r = p->next;
free(p);
p = r;
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: