注册 登录
编程论坛 数据结构与算法

【求助】请问这个程序通过编译了还是被要求中断是怎么回事

抹茶裙边 发布于 2015-10-03 21:26, 2368 次点击
0x00C418BC 处(位于 demo1.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。

如有适用于此异常的处理程序,该程序便可安全地继续运行。


会出现上面的提示。请问是怎么回事?
12 回复
#2
hjx11202015-10-03 21:29
及有可能是system不高兴,有点小情绪什么的,哄哄就好了
#3
抹茶裙边2015-10-03 21:34
回复 2楼 hjx1120
版版别调皮 真心求助阿 好捉急
#4
hjx11202015-10-03 21:36
回复 3楼 抹茶裙边
楼主的信息这么少,谁知道是什么情况呀
#5
抹茶裙边2015-10-03 21:37
回复 4楼 hjx1120
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define Listsize 100

struct Node {
    int data;
    struct Node *next;
};

typedef struct Node ListNode;
typedef struct Node *LinkList;

LinkList CreateCycleList(int n);
void DisplayCycleList(LinkList head);

int main()
{
    LinkList h;
    int n;
    printf("创建一个循环的单链表:\n");
    printf("请输入元素的个数:");
    scanf_s("%d", &n);
    h = CreateCycleList(n);
    DisplayCycleList(h);
    return 0;
}

LinkList CreateCycleList(int n)//创建一个不带头节点的循环单链表
{
    int e;
    LinkList head = NULL;
    ListNode *p, *q;
    int i;
    i = 1;
    q = NULL;
    while (i <= n)
    {
        printf("请输入第%d个元素:", i);
        scanf_s("%d", &e);
        if (i == 1)
        {
            head = (LinkList)malloc(sizeof(ListNode));
            head->data = e;
            head->next = NULL;
            q = head;
        }
        else
        {
            p = (LinkList)malloc(sizeof(ListNode));
            p->data = e;
            p->next = NULL;
            q = p;
        }
        i++;
    }
    if (q != NULL)
        q->next = head;

};

void DisplayCycleList(LinkList head)
{
    ListNode *p;
    p = head;
    if (p == NULL)
    {
        printf("该链表是空表");
        return;
    }
    while (p->next!= head) {
        printf("%d", p->data);
        p = p->next;
    }
    printf("%4d", p->data);
}
#6
抹茶裙边2015-10-03 21:40
回复 4楼 hjx1120
这是我的代码。就是创建一个循环单链表。结果运行完毕按回车的时候会出现一个警示框,就是说1楼的那个情况。

而且是最后会指到这行

while (p->next!= head) {
#7
林月儿2015-10-03 22:57
回复 6楼 抹茶裙边
说实话,当初学C用的TC,我现在学的java这种代码不跑一遍还真不知道怎么改
#8
抹茶裙边2015-10-03 23:06
回复 7楼 林月儿
弱弱的问您一下 我现在突然不明白

程序代码:
else
        {
            p = (LinkList)malloc(sizeof(ListNode));
            p->data = e;
            p->next = NULL;
            q->next = p;
            q = q->next;
        }
        i++;
    }
    if (q != NULL)
        q->next = head;
    return head;


这个里面为什么要判断if (q != NULL)呢?在这里面是q=p,q肯定是NULL,因为p一直指向NULL啊。。
#9
林月儿2015-10-03 23:12
q->next = p;
q = q->next;
上一句让q下一个结点不为null而为p
那么q=q->next,q就是p,p可不为null是p->next为null哦
#10
抹茶裙边2015-10-03 23:16
回复 9楼 林月儿
噢噢~对对~明白辣

谢谢大神提点
#11
林月儿2015-10-03 23:18
以下是引用抹茶裙边在2015-10-3 23:16:46的发言:

噢噢~对对~明白辣

谢谢大神提点


早点休息吧!我室友都睡着了
#12
抹茶裙边2015-10-03 23:19
回复 11楼 林月儿
好哒!晚安版主大大-3-
#13
抹茶裙边2015-10-04 15:51
回复 11楼 林月儿
林版版有时间去看看我问的那个关于约瑟夫环的问题吧 谢谢!
1