奇怪!指针也不能正确带回参数值。。。。。。。。。。。。。
#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;
请各位高手看看是怎么回事?
#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;
请各位高手看看是怎么回事?
...全文
相关推荐
一个奇怪的问题使用ajax提交必须alert才能赋值
一个奇怪的问题,在使用ajax提交的时候将返回值赋给一个变量,无论怎么写都没法赋值,刚开始怀疑js有错但是ie没有反应过来,多次清缓存、部程序都没效果。。。。。。最后只好一行一行的alert看原因出在哪里;奇怪的是加上了alert之后就可以赋值,删掉alert后就又不可以了。百度了一下发现是因为ajax默认是异步执行的,也就是并没有等待请求完毕就开始执行下一行js语句了,导致赋值为null。 如果遇到ajax请求后有回调函数之类的问题就要加上async:false,注意如果是给false加上引号是没发解决问题的。 代码如下: $.ajax({ async:false })
奇怪的C语言特性
下面列出的特性未必奇怪,有的算是有趣
奇怪的小球
原创作品,创新的一款游戏,同时也是一个关于线程的作品,具有开发价值。
c++奇怪的魔塔
c++期末大作业,包含所学的各种知识点,代码易懂不超纲
什么是奇怪的数列以及学习了解奇怪的数列的意义是什么
奇怪的数列


