| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1482 人关注过本帖
标题:求问,L->a[i]=getchar();为何出错呢
取消只看楼主 加入收藏
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:10 
求问,L->a[i]=getchar();为何出错呢
//【考察点:顺序表】编写一个程序,其功能是:在一个乱序的顺序存储线性表中,删除所有值相等的多余元素。
#include<stdio.h>
#define N 100
typedef char DataType;
typedef struct
{
    DataType a[N];
    int last;
}SeqList;
//SeqList* L;
 SeqList *Input(SeqList *L)
{
    int i=0;
    L->a[i]=getchar();//为何这一步就无法赋值(执行)呢
    while(L->a[i]!='#'&&i<N);
    {   
        i++;
        L->a[i]=getchar();//同样执行不下去            
    }
    L->last=i-1;
    return L;
}
int DelList(SeqList* L,DataType x[])
{

    int l=0;
    for(int i=0;i<L->last;i++)
    {

        for(int j=i+1;j<=L->last;j++)
        {
            if(L->a[i]==L->a[j])
            {
            
                x[l]=L->a[j];//把预删除元素存放到x[l]中
                l++;
                for(int k=j;k<L->last;k++)
                {
                    L->a[k]=L->a[k+1];
                }
                L->last=L->last-1;
                j=j-1;
            }
        }
    }return 0;
}
int Output(SeqList* L,DataType x[])
{

    for(int i=0;i<=L->last;i++)
        printf("%c",L->a[i]);
    printf("\n");
    printf("输出删除元素:");
    for(i=0;i<=L->last;i++)
        printf("%c",x[i]);
    printf("\n");
    return 0;
}
int main(void)
{
    SeqList *L;
    DataType x[N];
    printf("输入随意的一组字符,个数小于100,'#'为终止符:");
    Input(L);
    DelList(L,x);
    printf("输出删除了大小相同数字的一组数字:");
    Output(L,x);
    return 0;
}

搜索更多相关主题的帖子: include return 线性表 元素 
2013-10-16 15:39
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 2楼 embed_xuel
sorry,那个是笔误。。。
2013-10-16 16:03
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 4楼 embed_xuel
L分配了呀,在Input里面不就是对L里面成员结构的初始化么,L又不是单链表,应该不用malloc吧
2013-10-16 16:25
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 6楼 embed_xuel
所以你的意思是在    SeqList *L;后面加一句    L=(SeqList*)malloc(SeqList);???
2013-10-16 16:52
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 8楼 embed_xuel
指向结构体中的成员呀,但是这个时候应该不用分配内存空间吧,因为这个时候   SeqList*L已经对L进行了初始化,L是一个结构体类型的指针,就如同int*L一样。
2013-10-16 17:10
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 10楼 hh373231690
想了半天,也看了资料,可是。。L->a[i]不就是L对成员函数的访问么。L是一个SeqLink类型的指针,我又没有对它进行free(L),为何它会是个野指针呢。而且如果说我用的是SeqLink L的话,和SeqLink *L的区别不就是在于一个访问的时候用的是"."一个是"->"的么???
2013-10-16 17:38
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 12楼 embed_xuel
我觉得指针应该是存储了我想要指向内容的单元地址,通过指针p得到p里面存储的地址,再通过地址访问p所指向的内存单元里的内容。
2013-10-16 17:50
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
那么是不是说这个时候我并没有告诉系统说我这时候的L指向了什么变量,即这个时候L里面没有我想要指向变量的地址,所以它成为了一个野指针,那么这个时候应该怎么让L指向我想要指向的内容呢?

2013-10-16 17:52
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 15楼 embed_xuel
似乎并不知道是指向了哪个单元。那么又该如何让它指向一个SeqLink类型的结构体呢?
2013-10-16 17:56
liuxinyancom
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-10-16
收藏
得分:0 
回复 17楼 embed_xuel
原来malloc函数还有绑定指针指向对象的作用。,十分感谢呀,这个问题困扰我好久了,以前只知道用malloc,而没有真正理解呀(当然现在也谈不上完全理解),感谢感谢,麻烦你了。
2013-10-16 18:20
快速回复:求问,L->a[i]=getchar();为何出错呢
数据加载中...
 
   



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

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