设有一个表头指针为h的单链表。试设计一个算法,通过遍历一趟链表,将链表中所有结点的链接方向逆转。要求逆转结果链表的表头指针h指向原链表的最后一个结点。
【输入】第一行整数n(1<=n)
第二行为单链表中的n个整数
【输出】置逆后的单链表信息
例如:
【输入】
6
3 6 9 10 6 1
【输出】
1 6 10 9 6 3
请看看漏掉了哪一个,我自己电脑运行是没问题的但提交有一个是错的
#include<stdio.h>
#include<stdlib.h>
typedef struct number{
int value;
struct number *next;
struct number *pre;
}num;
num * add(num* head,int n);
void output(num* head,int n);
int main(){
int n;
scanf("%d",&n);
num* head=NULL;
head=add(head, n);
}
num * add(num* head,int n)
{
for(int i=0;i<n;i++){
num* p=(num*)malloc(sizeof(num));
scanf("%d",&p->value);
p->next=NULL;
p->pre=NULL;
if (head==NULL) {
head=p;
}
else{
num* last=head;
while (last!=NULL&&last->next!=NULL) {
last=last->next;
}
last->next=p;
p->pre=last;
head->next->pre=head;
}
}
num* last=head;
while (last!=NULL&&last->next!=NULL) {
last=last->next;
}
do {
printf("%d ",last->value);
last=last->pre;
} while (last!=head);
printf("%d",head->value);
return head;
}