要求:用单链表来实现逆制?
注明:之前用的顺序表实现过逆制,现在用链式结构来实现逆制
#include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; }Node; void Init(Node *phead)//初始化链表 { phead->data=0; phead->next=NULL; } void Creat(Node *phead)//创建链表 { int data; Node *p=phead; printf("请输入,并以-1结束输入:"); while(scanf("%d",&data) && data != -1) { Node *q=(Node*)malloc(sizeof(Node)); q->data=data; q->next=NULL; p->next=q; p=q; } } void sort(Node *phead)//逆制 { if(phead==NULL || phead->next==NULL) return; Node *p=phead->next; Node *q=p->next; Node *t=(Node *)malloc(sizeof(Node)); if(t==NULL) exit(-1); while(q!=NULL)//从链表的第二个数开始,一直取一个数在链表中头插 { t=q->next; q->next=phead->next; phead->next=q; q=t; } p->next=NULL; } void show(Node *phead)//显示链表 { Node *p=phead->next; while(p!=NULL) { printf("%d ",p->data); p=p->next; } printf("\n"); } void main() { Node p; Init(&p); Creat(&p); printf("逆制前:\n"); show(&p); sort(&p); printf("逆制后:\n"); show(&p); }
时间: 2024-11-25 06:53:41