| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1053 人关注过本帖
标题:简单单链表,却出现了内存不能读,为何?
只看楼主 加入收藏
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
结帖率:100%
收藏
 问题点数:0 回复次数:3 
简单单链表,却出现了内存不能读,为何?
我有一个这样的程序(如下),可是出不来结果,提示内存不能读喔~~~
请高手解释一下啊

#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
#include "malloc.h"
#include "string.h"
#define  NULL   0
typedef struct node
{
    char name[10];//进程名称
    int  needtime;//进程完成的时间
    int  cputime;//占用CPU时间
    char state;//进程状态
    struct node *next;
}PCB;
int N;
node *create();
void disp(node *head);

node *create()
{
    PCB *head,*p,*q;
    int i;
    char name1[10];
    int needtime1;
    head=(node *)malloc(sizeof(node));
    if (head==NULL)
    {
        printf("内存分配错误,退出!");
        exit(-1);
    }
    head->next=NULL;
    p=head;
    for (i=0;i<N;i++)
    {
        printf("请输入第[%d]个进程的信息:\n",i+1);
        q=(node *)malloc(sizeof(node));
        if (q==NULL)
        {
            printf("内存分配错误,退出!");
            exit(-1);
        }    
        printf("进 程 名 称 :");
        scanf("%s",name1);
        strcpy(q->name,name1);
        printf("进 程 所 需 要 时 间:");
        scanf("%d",&needtime1);
        q->needtime=needtime1;
        q->cputime=0;
        q->state='W';
        p->next=q;
        p=q;
        printf("\n");
    }
    return head;
}

void disp(node *head)
{
    PCB *p;
    p=head->next;
    if (p==NULL)
    {
        printf("链表为空,无法输出!\n");
        exit(-1);
    }
    else
    {
        printf("   NAME  CPUTIME   NEEDTIME   STATUS\n");
        while(p)
        {
            printf("   %s\t%d\t%d\t%c\n",p->name,p->cputime,p->needtime,p->state);
            p=p->next;
        }
    }
    printf("\n");
}
int main(void)
{
    PCB *head;
    printf("\n\t\t\t\t\t 先 来 先 服 务 算 法\n\n");
    printf("\t\t\t\t\t\t ------网络0501谷文杰\n");

KK:printf("\n\n请输入进程控制块的总数(小于10):");
    scanf("%d",&N);
    if (N>10)
    {
        printf("您输入的数目过大,请重新输入...");
        goto KK;
    }
    printf("\n");
    head=create();
    disp(head);
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 内存 单链 
2008-01-07 19:04
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
怎么又goto~还有用完了怎么不free()?你的链表打印好像又些问题,创建表也又问题:
打印处:   p=head->next; 改为 p=head;
创建表处:  最后一个结点的next域没有设置,在return前面加上p-next=null;

樱花大战,  有爱.
2008-01-07 19:21
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
喔~~~

 你说的是对的呢,我改了。
谢谢你了呢~~~~~~

~~我的明天我知道~~
2008-01-07 19:45
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
通过了么?

樱花大战,  有爱.
2008-01-07 19:59
快速回复:简单单链表,却出现了内存不能读,为何?
数据加载中...
 
   



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

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