| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 688 人关注过本帖
标题:链表问题!
只看楼主 加入收藏
Cbirdfly
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2010-8-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
链表问题!
建立一个链表 想修改里面的数据 但是为什么修改后数据没有变化?
函数:
Struct Node *head,*p;
struct Node *xiugai(char *old_data,char *new_data)
{
   if(head==NULL) return NULL;
   p=head;
   while(p!=NULL)
   {
       if(p->data==*old_data)
       {
           p->data=*new_data;
           break;
       }
       p=p->next;
   }
   return head;
}

在Main()函数中调用了 同时传进去参数了
这是为什么哩?
搜索更多相关主题的帖子: 链表 
2010-08-13 23:28
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:5 
想看看你调用的情况,现在看起来好象没什么错误.
2010-08-14 00:28
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:5 
if(p->data==*old_data)
你是字符串比较?
用strcmp试试

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2010-08-14 08:57
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:5 
Struct Node *head,*p;

struct Node *xiugai(char *old_data, char *new_data)
{
   if(head==NULL)
       return NULL;
   p=head;
   while(p!=NULL)
   {
       if(p->data==*old_data)            //看你的参数类型,应该是字符串,应改为 if(!strcmp(p->data, old_data))
       {
           p->data=*new_data;
           break;
       }
       p=p->next;
   }
   return head;
}
另外head和p是全局变量是吧,那应该是没有问题的。
2010-08-14 10:08
Cbirdfly
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2010-8-6
收藏
得分:0 
void Main()
{
    ......
.....
     char *old,*newData;//开始声名变量是这样的char old,newData;
    scanf("%c %c",old,newData);//scanf("%c %c",&old,&newData);
    *xiugai(old,newData);//*xiugai(&old,&newData);这样做没有变化 就改成前面那样了
getchar();
}
但是 还是没有变化= =、为啥哩?
这是main() 函数里的,我用的不是字符串,是单个字符- -!
2010-08-14 10:39
erikyo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:270
专家分:1154
注 册:2010-6-10
收藏
得分:0 
void Main()
{
    ......
.....
     char *old,*newData;//你声明的是指针变量
    scanf("%c %c",old,newData);//你把输入的值给指针变量,也就是说指针的值是你输入的值,他把你输入的值作为地址看待。那你再看看和你原来想的一样吗
    *xiugai(old,newData);//
getchar();
}
2010-08-14 10:51
Cbirdfly
Rank: 1
等 级:新手上路
帖 子:20
专家分:8
注 册:2010-8-6
收藏
得分:0 
他把我输入的值当做地址看待了? 这个还真不知道啊
这样的话 我已开始没用指针变量为啥也不改变呢?
2010-08-14 10:59
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
根据你的意思,重写了一份代码,你看看是不是这样的?

程序代码:
#include<stdio.h>
#include<stdlib.h>

typedef struct st
{
    char data;
    struct st *next;
}st;

st *new_line();
st *xiugai(st *head,char old,char new_data);
void print(st *head);

int main(void)
{
    st *head;
    char old,new_data;

    head=new_line();
    print(head);
    scanf("%c %c",&old,&new_data);
    head=xiugai(head,old,new_data);
    print(head);

    return 0;
}

st *new_line()
{
    st *head,*pr,*p;
    int i;

    head=pr=NULL;
    for(i=0;i<10;++i)
    {
        while((p=(st *)malloc(sizeof(st)))==NULL)
            ;
        if(!i)
        {
            head=pr=p;
        }
        else
        {
            pr->next=p;
            pr=p;
        }
        p->data=getchar();
        while(getchar()!='\n');
    }
    p->next=NULL;

    return head;
}

st *xiugai(st *head,char old,char new_data)
{
    st *p;

    p=head;
    if(head==NULL)
    {
        return NULL;
    }
    while(p)
    {
        if(p->data==old)
        {
            p->data=new_data;
            break;
        }
        p=p->next;
    }
    return head;
}

void print(st *head)
{
    st *p=head;

    while(p)
    {
        putchar(p->data);
        p=p->next;
    }
}


[ 本帖最后由 广陵绝唱 于 2010-8-14 17:46 编辑 ]
2010-08-14 16:41
新浪
Rank: 3Rank: 3
来 自:水星
等 级:论坛游侠
威 望:1
帖 子:770
专家分:167
注 册:2008-6-10
收藏
得分:5 
回复 8楼 广陵绝唱
不是这样的,

天下皆醒,唯我独醉;  天下皆白,唯我独黑
2010-08-14 17:34
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
对不起,呵,刚才忘了回代码了.
2010-08-14 17:47
快速回复:链表问题!
数据加载中...
 
   



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

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