奇怪!指针也不能正确带回参数值。。。。。。。。。。。。。

Mr_Yang Mr_Yang 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include <stdio.h>
#include <stdlib.h>

struct NODE
{
int num;
struct NODE *next;
};

struct NODE *create(void) // 创建链表
{
int n = 0;
struct NODE *head = NULL;
struct NODE *p1, *p2;

p1 = p2 = (struct NODE *)malloc(sizeof(struct NODE));
scanf("%d", &p1->num);

while (p1->num != 0)
{
n++;
if (1 == n)
head = p1;
else
p2->next = p1;

p2 = p1;
p1 = (struct NODE *)malloc(sizeof(struct NODE));
scanf("%d", &p1->num);
}
p2->next = NULL;
return head;
}

void destory(struct NODE *LinkList) // 释放链表
{
if (&LinkList == NULL)
return;

struct NODE *p1, *p2;
p1 = LinkList;
while(p1->next != NULL)
{
p2 = p1->next;
free(p1);
p1 = p2;
}
}

void Reverse(struct NODE *LinkList) // 求链表的逆序
{
if (LinkList == NULL || LinkList->next == NULL)
return ;

struct NODE *p, *p1, *p3;

p = p3 = LinkList;
p1 = LinkList->next;

while(p1->next != NULL)
{
LinkList->next = p1->next;
p = p1;
p1->next = p3;
p3 = p1;
p1 = LinkList->next;
}
LinkList->next = NULL;
p1->next = p3;
p = p1;


LinkList = p;
LinkList->next = p->next; //???????????????????
// return LinkList;
}

void Print(struct NODE *LinkList) // 打印链表
{
struct NODE *p;
p = LinkList;
while (p != NULL)
{
printf("%d\t", p->num);
p = p->next;
}
printf("\n");
}

void main(void)
{
struct NODE *list;

list = create();
Print(list);
Reverse(list);
Print(list);
destory(list);
}

如题,本程序为实现一个链表的逆序,在上面的?????????????处linklist的值是正确的,但传给主函数的list就不对了。
输入:1 2 3 4 5 0
Reverse()中linklist:为5->4->3->2->1->NULL
但到了主函数中list: 1->NULL;
请各位高手看看是怎么回事?
...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
Mr_Yang
C语言 70,039 成员 243,237 内容