单链表逆置

来源:互联网 发布:acl 源 mac 目的ip 编辑:程序博客网 时间:2024/05/18 00:44
<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;}}


                                             
0 0