| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 728 人关注过本帖
标题:这个输出函数为什么不能实现输出功能?
只看楼主 加入收藏
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
结帖率:38.67%
收藏
已结贴  问题点数:10 回复次数:11 
这个输出函数为什么不能实现输出功能?
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define     OK      1
#define     NULL   0
#define     OVERFLOW     -2
typedef     int     ElemType;   
typedef     int Status;
#define     LIST_INIT_SIZE   100
#define     LISTINCREMENT     10
typedef struct node
{
     int data;
     struct node *next;
}Linklist;

Status Initilist()
{
    Linklist *head;
    if(head=(Linklist *)malloc(sizeof(node)==NULL))
    {
        return 0;
    }
    head->next=NULL;
    return OK;
}

Linklist *createlist(int n)
{
    int x,k;
    Linklist *head,*r,*p;
    p=(Linklist *)malloc(sizeof(Linklist));
    head=p;
    p->next=NULL;
    r=p;
    for(k=1;k<=n;k++)
    {
        printf("input value:\n");
        scanf("%d",&x);
        p->data=x;
        p->next=NULL;
        r->next=p;
        r=r->next;
    }
    return (head);
}

void Printlist()
{
    int i=1;
    int x=0;
    int n=0;
    Linklist *p;
    for(i=1;i<=n;i++)//为什么不能输出x的值?代码该如何写?
    {
        printf("%d",x);
        p=p->next;
    }
}
Linklist *find(Linklist *head,int i)
{
    int j;
    Linklist *p;
    p=head->next;
    j=1;
    while(p!=NULL&&j<i)
    {
        p=p->next;
        j++;
    }
    return p;
}

void insert(Linklist *head,int x,int k)
{
    Linklist *p,*s,*r;
    s=(Linklist *)malloc(sizeof(Linklist));
    s->data=x;
    p=head->next;
    if(p==NULL)
    {
        head->next=s;
        s->next=NULL;
    }
    else
    {
        while(p&&p->data!=k)
        {
            p=p->next;
        }
        if(p->data==k)
        {
            s->next=p->next;
            p->next=s;
        }
        else
        {
            p->next=r;
            r->next=NULL;
        }

    }
}

int main(int argc, char* argv[])
{
    Linklist L;
    Linklist *head;
    int select;
    int i=0;
    Initilist();
    createlist(5);
    Printlist();
    return 0;
}
 
搜索更多相关主题的帖子: 函数 输出 
2009-09-27 20:36
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:10 
Status Initilist()
{
    Linklist *head;
    if(head=(Linklist *)malloc(sizeof(node)==NULL))
    {
        return 0;
    }
    head->next=NULL;
    return OK;
}
函数里定义的head是在栈区,函数调用结束后,会释head指针。malloc生成的是在堆区,只能用free释放。很明显,你这里的head 与主函数的head是两个不同的变量
2009-09-27 20:56
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
那代码应该如何修改啊?
2009-09-27 21:07
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:0 
Linklist *createlist(Linklist *head int n)
{
    int x,k;
    Linklist *r,*p;
    p=(Linklist *)malloc(sizeof(Linklist));
    head=p;
    p->next=NULL;
    r=p;
    for(k=1;k<=n;k++)
    {
        printf("input value:\n");
        scanf("%d",&x);
        p->data=x;
        p->next=NULL;
        r->next=p;
        r=r->next;
    }
    return (head);
}
这函数,有问题
2009-09-27 21:10
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:0 
p->data=x; 没输入,一个值,都得用一下Linklist *)malloc(sizeof(Linklist));否则,没地方放X
2009-09-27 21:12
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:0 
上面的把没改为每
2009-09-27 21:13
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
代码是这样改吗?加进去了还是不能输出
Linklist *createlist(Linklist *head,int n)
{
    int x,k;
    Linklist *r,*p;
    p=(Linklist *)malloc(sizeof(Linklist));
    head=p;
    p->next=NULL;
    r=p;
    for(k=1;k<=n;k++)
    {
        p=(Linklist *)malloc(sizeof(Linklist));
        printf("input value:\n");
        scanf("%d",&x);
         
        p->data=x;
        p->next=NULL;
        r->next=p;
        r=r->next;
    }
    return (head);
}
2009-09-27 21:25
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:0 
//#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#define     OK 1
#define     NULL 0
#define     OVERFLOW -2
typedef     int ElemType;     
typedef     int Status;
#define     LIST_INIT_SIZE 100
#define     LISTINCREMENT 10
typedef struct node
{
     int data;
     struct node *next;
}Linklist;
 
Status Initilist(Linklist **L)
{
    Linklist *head;
    head=(Linklist *)malloc(sizeof(node));
    if(head==NULL)
    {
        return 0;
    }
     
 
    *L=head;
    head->next=NULL;
    return OK;
}
 
Linklist createlist(Linklist *head ,int n)
{
    int x,k;
    Linklist *r,*p;
    p=(Linklist *)malloc(sizeof(Linklist));
    head->next=p;
    printf("input value:\n");
    scanf("%d",&x);
    p->data=x;
    p->next=NULL;
    r=p;
    for(k=1;k<n;k++)
    {
        p=(Linklist *)malloc(sizeof(Linklist));
        printf("input value:\n");
        scanf("%d",&x);
        p->data=x;
        p->next=NULL;
        r->next=p;
        r=r->next;
    }
    return (*head);
}
 
void Printlist(Linklist *L,int n)
{
    int i=1;
    int x=0;
    //int n=0;
 
    Linklist *p;
    p=L->next;
    for(i=1;i<=n;i++)//为什么不能输出x的值?代码该如何写?
    {
        printf("%d",p->data);
        p=p->next;
    }
}
Linklist *find(Linklist *head,int i)
{
    int j;
    Linklist *p;
    p=head->next;
    j=1;
    while(p!=NULL&&j<i)
    {
        p=p->next;
        j++;
    }
    return p;
}
 
void insert(Linklist *head,int x,int k)
{
    Linklist *p,*s,*r;
    s=(Linklist *)malloc(sizeof(Linklist));
    s->data=x;
    p=head->next;
    if(p==NULL)
    {
        head->next=s;
        s->next=NULL;
    }
    else
    {
        while(p&&p->data!=k)
        {
            p=p->next;
        }
        if(p->data==k)
        {
            s->next=p->next;
            p->next=s;
        }
        else
        {
            p->next=r;
            r->next=NULL;
        }
 
    }
}
 
int main(void)
{
    Linklist *L=NULL;
    int i=0;
    //int select;
    int n=5;
    Initilist(&L);
    createlist(L,n);
    Printlist(L,n);
    return 0;
}
小改了一下,现在能输出了
2009-09-27 21:31
henji
Rank: 1
等 级:新手上路
帖 子:227
专家分:0
注 册:2009-4-19
收藏
得分:0 
Status Initilist(Linklist **L) 这句是什么意思啊?函数里面的参数我有点看不懂
2009-09-27 21:49
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
收藏
得分:0 
指针的指针
2009-09-27 21:54
快速回复:这个输出函数为什么不能实现输出功能?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052387 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved