单链表的就地逆制

来源:互联网 发布:网络方案的初步设计 编辑:程序博客网 时间:2024/05/22 00:26
#include"stdio.h"#include"stdlib.h"#include"conio.h"typedef struct Node{    int i;    struct Node* next;}Node;Node* creatlist(){    Node *p,*q,*head;    int i=0;        char choice;    head=(Node *)malloc(sizeof(Node));    head->next=NULL;    p=head;    do    {        q=(Node *)malloc(sizeof(Node));        scanf("%d",&q->i);        p->next=q;        p=q;        puts("jixu?\n");        choice=getch();    }while(choice=='Y'||choice=='y');    p->next =NULL;    return head;}void printf_inf(Node * head){     Node* p;    for(p=head->next;p!=NULL;p=p->next)    {        printf("%d",p->i);     }  }  Node *list_reverse(Node *head)  {      Node *p = head->next;      Node *q = NULL;      head->next = NULL;      while(p != NULL)      {          q = p->next;          /*保存下一个节点*/          p->next = head->next; /*把节点插入到头结点后面*/          head->next = p;       /*头结点一直指向最新插入的节点*/          p = q;                /*调整指针,指向下一个节点*/      }  }  int main(){    Node *head;    head=creatlist();    printf_inf(head);printf("\n");    list_reverse(head);      printf_inf(head);}
0 0
原创粉丝点击