毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 开发语言 >> 正文

为什么到了main函数调用时就不对了,运行出来的结果是错的

更新时间:2013-8-12:  来源:毕业论文

为什么到了main函数调用时就不对了,运行出来的结果是错的

#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int data;
struct node *next;
}  node;

node *CreateList(int n) 
{ node *head,*p,*s;
int i;
if( n <1 || n >10000)
return 0;

head =(node*)malloc(sizeof(node));
p = head;
for(i = 0; i < n-1; i++)
{   s=(node*)malloc(sizeof(node));
//     scanf("%d",&s->data);
p->next =s;
p = s;
}  p->next=NULL;
return head;
}

void searchmid(node *head,node *mid,node *mid1,node *mid2)
{
node *p;
node *q;
    p=head;
q=head;
while(p->next!=0)

        if(p->next->next==0)
{

mid1=q;
mid2=q->next;
break;
}
else
{
mid=q->next;
}

p=p->next->next;
q=q->next;
}
printf("%d\n",mid,mid1,mid2);

}

void main()
{
node* list;
node* mid;
node* mid1;
node* mid2;
//创建链表,把链表做好,把结构体,指针都定义好;
list = CreateList(10);
searchmid(list, mid,mid1,mid2);

//找中间结点
printf("%d\n",mid);
//显示出来中间结点
}


链表
struct
malloc
sizeof
printf .分享到: 
对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除
管理 回复次数:10 
 schlafenhamster
schlafenhamster 等级:
结帖率:100%
3 #1 得分:40 回复于: 2013-08-11 08:07:21
“void searchmid(node *head,node *mid,node *mid1,node *mid2)”
这个函数要用 双星  指针 即:
void searchmid(node *head,node **mid,node **mid1,node **mid2)
因为 head 不变,mid,mid1,mid2的 值 都要改变的。 
关注CSDN论坛微博 送CSDN积分大礼包对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除
管理 
 c8yijun
c8yijun 等级:
结帖率:50% #2 得分:0 回复于: 2013-08-11 12:28:27
为什么修改后的程序输出的结果经过检查还是错误的呢? 
【免积分下载】2013上半年超人气精华资源汇总对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除
管理 
 schlafenhamster
schlafenhamster 等级:
结帖率:100%
3 #3 得分:0 回复于: 2013-08-11 12:30:55
看看“修改后的程序” 
独一无二的职位:开源社区经理 对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除
管理 
 c8yijun
c8yijun 等级:
结帖率:50% #4 得分:0 回复于: 2013-08-11 12:55:29
#include <stdio.h>
#include <malloc.h>
typedef struct node
{
int data;
struct node *next;
}  node;

node *CreateList(int n) 
{ node *head,*p,*s;
int i;
if( n <1 || n >10000)
return 0;

head =(node*)malloc(sizeof(node));
p = head;
for(i = 0; i < n-1; i++)
{   s=(node*)malloc(sizeof(node));
//     scanf("%d",&s->data);
p->next =s;
p = s;
}  p->next=NULL;
return head;
}

void searchmid(node *head,node **mid,node **mid1,node **mid2)
{
node *p;
    node *q;
    p=head;
q=head;
while(p->next!=0)

        if(p->next->next==0)
{

*mid1=q;
*mid2=q->next;
break;


}

else
{
*mid=q->next;
}

p=p->next->next;
q=q->next;

}
    printf("%d\n",mid,mid1,mid2);


}

void main()
{
node* list;
node* mid;
node* mid1;
node* mid2;
//创建链表,把链条做好,把结构体,指针都定义好;
list = CreateList(3);
searchmid(list, &mid,&mid1,&mid2);

//找中间结点
printf("%d\n",mid);
//显示出来中间结点
}
 
对我有用[0] 丢个板砖[0] 引用 | 举报 | 编辑 删除
管理 
 schlafenhamster
schlafenhamster 等级:
结帖率:100%
3 #5 得分:0 回复于: 2013-08-11 17:02:24
#include <stdio.h>
#include <malloc.h>

typedef struct node
{
int data;
struct node *next;
}  node;

node *CreateList(int n) 
{
node *head,*p,*s;
int i;
if( n <1 || n >10000) return 0;

head =(node*)malloc(sizeof(node));
p = head;
for(i = 0; i < n-1; i++)
{
s=(node*)malloc(sizeof(node));
//     scanf("%d",&s->data);
p->next =s;
p = s;
p->data=5;
}
p->next=NULL;
return head;
}

void searchmid(node *head,node **mid,node **mid1,node **mid2)
{
node *p;
    node *q;
    p=head;
q=head;
while(p->next!=0)

if(p->next->next==0)
{
*mid1=q;
*mid2=q->next;
break;
}
else
{
*mid=q->next;
}
p=p->next->next;
q=q->next;
}
    printf("mid=0x%08X mid1=0x%08X mid2=0x%08X\n",mid,mid1,mid2);
}

void main()
{
node* list;
node* mid;
node* mid1;
node* mid2;
//创建链表,把链条做好,把结构体,指针都定义好;
list = CreateList(3);
searchmid(list, &mid,&mid1,&mid2);

//找中间结点
printf("%d\n",mid->data);
//显示出来中间结点

[1] [2] 下一页

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。