首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

编纂一个函数,反序排列一个单链表的所有节点

2012-08-22 
编写一个函数,反序排列一个单链表的所有节点#includestdio.h#includestdlib.htypedef struct Data{int

编写一个函数,反序排列一个单链表的所有节点

#include<stdio.h>#include<stdlib.h>typedef struct Data{int num;struct Data *next;} Data;Data * creat(Data *head){int n = 0;Data *p1, *p2;p1 = p2 = (Data *)malloc(sizeof(Data));if(p1 == NULL){printf("鐢宠澶辫触锛?);return 0;}printf("杈撳叆num\n");scanf("%d", &(p1->num));while(p1->num != 0){n++;if(n == 1){head->next = p1;}else{p2->next = p1;p2 = p1;}p1 = (Data *)malloc(sizeof(Data));if(p1 == NULL){printf("鐢宠澶辫触锛?);exit(1);}printf("杈撳叆num\n");scanf("%d", &(p1->num));}p2->next = NULL;return head;}Data * fanlist(Data *head){Data *p1, *p2, *p3, *p4;p4 = head;p1 = head->next;p2 = p1->next;p3 = p2->next;for( ; p3 != NULL; ){if(p3->next == NULL){p3->next = NULL;}p2->next = p1;p1 = p2;p2 = p3;p3 = p3->next;}p2->next = p1;p1 = p2;p4->next->next = NULL;p4->next = p1;return (p4);}void print(Data *d){Data *p;p = d->next;for(;p != NULL;p = p->next){printf("%d  ", p->num);}printf("\n");}int main(){Data data, *head;Data *h;head = creat(&data);h = fanlist(head);print(h);return 0;}


 

热点排行