64,651
社区成员
发帖
与我相关
我的任务
分享
//结构体定义
struct list
{
int data;
struct list *next;
};
typedef struct list NODE;
typedef NODE *LINK;
LINK reverse(LINK head);
int main()
{
LINK ptr,head;
reverse(head);//如果不接收reverse函数返回的值,head就不会改变,但是head不是一个指针吗?如果改成 //head=reverse(head)就是正确的了,但我不明白这是为什么?
}
//不借助辅助空间,直接逆序单链表
//练手小程序,没有考虑其健壮性和容错性,请保证结点个数大于3
LINK reverse(LINK head)
{
LINK p1=head;
LINK p2=p1->next;
LINK p3=p2->next;
p1->next=NULL;
p2->next=p1;
while(p3!=NULL)
{
p1=p2;
p2=p3;
p3=p3->next;
p2->next=p1;
}
return p2;
}
LINK ptr,head;
head = (LINK)malloc(sizeof(LINK));
memset(head, 0, sizeof(LINK));
reverse(head);
printf("%d", head->data);//这儿打印出来的就是11
}
LINK reverse(LINK head)
{
head->data = 11;
return NULL;
}
int main()
{
LINK ptr,head;//这里的指针都是经过初始化了的,步骤省略了
reverse(head);//如果不接收reverse函数返回的值,head就不会改变,但是head不是一个指针吗?如果改成//head=reverse(head)就是正确的了,但我不明白这是为什么?
}
LINK ptr,head;
head = (LINK)malloc(sizeof(LINK));
memset(head, 0, sizeof(LINK));
reverse(head);