haoningabc 发表于 2013-1-26 12:26:11

单向链表翻转

临时笔记,创建一个链表
#include <stdlib.h>#include <stdio.h>typedef struct node* link;struct node {int item;link next;};int main(int argc,char * argv[]){    int i,N=atoi(argv);    link t =malloc(sizeof *t),x=t;    t->item=1;t->next=t;    for(i=2;i<=N;i++){      x=(x->next=malloc(sizeof *x));      x->item=i;x->next=t;    }       x=t;//for(i=1;i<=N;i++){    while(x->next!=t){      printf("%d\n",x->item);      x=x->next;    }}~   

单向链表翻转
#include <stdlib.h>#include <stdio.h>typedef struct node* link;struct node {int item;link next;};int main(int argc,char * argv[]){    int i,N=atoi(argv);    struct node *t ,*x;    t=malloc(sizeof *t),x=t;    t->item=1;t->next=t;    for(i=2;i<=N;i++){      x=(x->next=malloc(sizeof *x));      x->item=i;x->next=t;    }       x=t;    for(i=1;i<=N;i++){      printf("%d\n",x->item);      x=x->next;    }//---------翻转开始--主要是temp节点存住了要变化的节点    struct node *s,*temp;    s=t;    for(i=1;i<=N;i++){      temp=s;      s=s->next;      temp->next=t;      t=temp;    }//---------翻转结束    x=t;    for(i=1;i<=N;i++){      printf("%d\n",x->item);      x=x->next;    }}
页: [1]
查看完整版本: 单向链表翻转