| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 333 人关注过本帖
标题:请教c的问题
只看楼主 加入收藏
fumin
Rank: 1
来 自:NCU
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-3-3
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:5 
请教c的问题
为什么在VC下运行报错:该内存不能为read

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

typedef struct LNode{
    char data;
    struct LNode *next;
}LNode,*LinkList;

LinkList createList(){
    LinkList L=(LinkList)malloc(sizeof(LNode));
    LinkList p,q=L;
    char ch;
    int i;
    for(i=0;i<5;i++){
        scanf("%c",&ch);
        if(ch>'Z'||ch<'A'){
            printf("error in createList.\n");
            return NULL;
        }
        p=(LinkList)malloc(sizeof(LNode));
        p->data=ch;
        if(L->next==NULL){
            L->next=p;
        }else{
            while(q->next!=NULL&&q->next->data<ch)q=q->next;
            p->next=q->next;
            q->next=p;
            q=L;
        }
    }
    return L;
}

void printList(LinkList L){
    LinkList p=L->next;
    while(p!=NULL){
        printf("%c",p->data);
        p=p->next;
    }
    printf("\n");
}

void main(){
    LinkList L=createList();
    printList(L);
}

2010-03-26 19:29
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:4 
LinkList createList(){
    LinkList L=(LinkList)malloc(sizeof(LNode));
    LinkList p,q=L;
    char ch;
    int i;
    L->next = NULL;  //初始化
    for(i=0;i<5;i++){
        scanf("%c",&ch);
        getchar(); //吃掉输入ch后的空格或者换行,它只能吃掉一个字符,建议使用 while(getchar() != '\n'),可以吃掉多个,不过每输入一个有效字符要按回车一下
        if(ch>'Z'||ch<'A'){
            printf("error in createList.\n");
            return NULL;
        }
        p=(LinkList)malloc(sizeof(LNode));
        p->data=ch;
        if(L->next==NULL){
            L->next=p;
            p->next = NULL;  //初始化
        }else{
            while(q->next!=NULL&&q->next->data<ch)q=q->next;
            p->next=q->next;
            q->next=p;
            q=L;
        }
    }
    return L;
}

void printList(LinkList L){
    LinkList p=NULL;
    if (L)               //检查L是不是为空,是的话不能再取L->next
        p = L->next;   
    while(p!=NULL){
        printf("%c",p->data);
        p=p->next;
    }
    printf("\n");
}
2010-03-26 20:29
hzh512
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:6
帖 子:234
专家分:1333
注 册:2009-6-5
收藏
得分:3 
指针老问题,初始化呀!!!

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode{
    char data;
    struct LNode *next;
}LNode,*LinkList;

LinkList createList(){

    LinkList L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;    //初始化!!!!!!!!!!
    LinkList p,q=L;
    char ch;
    int i;
    for(i=0;i<5;i++){
        scanf("%c",&ch);
        getchar();    //吃掉回车!!!!!!!
        if(ch>'Z'||ch<'A'){
            printf("error in createList.\n");
            return NULL;
        }
        p=(LinkList)malloc(sizeof(LNode));
        p->next=NULL;//初始化!!!!!!!!!!
        p->data=ch;
        if(L->next==NULL){
            L->next=p;
        }
        else{
            while(q->next!=NULL&&q->next->data<ch)
                q=q->next;
            p->next=q->next;
            q->next=p;
            q=L;
        }
    }
    return L;
}

void printList(LinkList L){
    LinkList p=L->next;
    while(p!=NULL){
        printf("%c",p->data);
        p=p->next;
    }
    printf("\n");
}

void main(){
    LinkList L=createList();
    printList(L);
}

编程=用几种语言在某个或几个平台上通过抽象思维运用一系列算法来解决现实中问题的手段
2010-03-26 20:31
赤那
Rank: 3Rank: 3
来 自:广东
等 级:论坛游侠
威 望:1
帖 子:127
专家分:178
注 册:2010-3-1
收藏
得分:3 
#include <stdio.h>
#include <stdlib.h>

typedef struct LNode
{
    char data;
    struct LNode *next;
}LNode,*LinkList;

LinkList createList()
{
    LinkList L=(LinkList)malloc(sizeof(LNode));
    LinkList p,q=L;
    q->data=NULL;q->next=NULL;//申请的空间要使它指向确定的值,否则它所指的值是不确定的
    char ch;
    int i;
    for(i=0;i<5;i++)
    {
        scanf("%c",&ch);
        getchar();  //使用scanf("%c",&ch);这个函数后,要把回车符取出
        if(ch>'Z'||ch<'A')
        {
            printf("error in createList.\n");
            
        }
        p=(LinkList)malloc(sizeof(LNode));
        p->data=ch;
        if(L->next==NULL)
        {
            L->next=p;
            p->next=NULL;//链尾p->next要指向空
        }
        else
        {
            while(q->next!=NULL&&q->next->data<ch)
                q=q->next;
            p->next=q->next;
            q->next=p;
            q=L;
        }
    }
    return L;
}

void printList(LinkList L)
{
    LinkList p=L->next;
    while(p!=NULL)
    {
        printf("%c",p->data);
        p=p->next;
    }
    printf("\n");
}

void main()
{
    LinkList L=createList();
    printList(L);
}
2010-03-26 20:52
fumin
Rank: 1
来 自:NCU
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-3-3
收藏
得分:0 
太感谢各位了!!!感激涕零啊!!!

就是为了和你不一样
2010-03-26 21:25
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>

#define LEN  sizeof( struct LNode )

typedef struct LNode
{
    char data;
    struct LNode *next;
}LNode,*LinkList;

LinkList Create_List()
{
    LinkList L = (LinkList) malloc (LEN);
    L->next = NULL;

    LinkList p;
    char ch;
    int i;

    for( i=0; i<5; i++ )
    {
        printf("\nInput a char:");
        scanf("%c", &ch);
        getchar();
        if( ch>'Z' || ch<'A' )
        {
            printf("error in Create_List.\n");
            return NULL;
        }
        p = (LinkList) malloc (LEN);
        p->data = ch;
        p->next = L->next;
        L->next = p;

    }
    return L;
}

void Print_List( LinkList L )
{
    LinkList p = L->next;
    while( p )
    {
        printf("%c ",p->data);
        p = p->next;
    }
    printf("\n");
}

void main()
{
    LinkList L = Create_List();
    if(L)
        Print_List( L );
}
2010-03-26 22:13
快速回复:请教c的问题
数据加载中...
 
   



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

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