不会代码的菜鱼 发表于 2022-9-18 17:15:58

引发了未经处理的异常:读取访问权限冲突。求修改解惑

本帖最后由 不会代码的菜鱼 于 2022-9-19 20:12 编辑

#include<stdio.h>
#include<stdlib.h>
typedef intDataType;
struct Node;
typedef struct Node *PNode;
struct Node {
      DataType info;
      PNode link;
};

typedef struct Node* LinkList;
LinkList createNullList_link(void) {
      LinkList llist;
      /*申请表头结点空间*/
      llist = (LinkList)malloc(sizeof(struct Node));
      if (llist != NULL) llist->link = NULL;
      else printf("Out of space!\n"); /*创建失败*/
      return llist;
}
int insertPost_link(LinkList llist, PNode p, DataType x) {
      PNode q = (PNode)malloc(sizeof(struct Node)); /*申请新结点*/
      if (q == NULL) {
                printf("Out of Space!\n");
                return 0;
      }
      else {
                q->info = x;
                q->link = p->link;      引发了未经处理的异常:读取访问权限冲突。      
                p->link = q;
                return 1;
}                                                                                                                                    
}
int deleteV_link(LinkList llist, DataType x) {
      PNode p, q; p = llist;
      if (p == NULL) return 0;
      while (p->link != NULL && p->link->info != x)
                p = p->link; /*找值为x的结点的前驱结点的存储位置*/
      if (p->link == NULL) { /* 没找到值为x的结点*/
                printf("Not exist!\n "); return 0;
      }
      else {
                q = p->link;/* 找到值为x的结点*/
                p->link = q->link;/* 删除该结点*/
                free(q); return 1;
      }
}
void main(void) {
      LinkList m = createNullList_link();
      PNode a= (PNode)malloc(sizeof(struct Node));
      m = &a;         //主要是将a的地址赋给m
insertPost_link(m,a,1);
         while(m!= NULL){
                printf("%d", m->info);
                m = m->link;
      }


}

ba21 发表于 2022-9-18 20:39:58

代码太杂乱

m = a; 是什么意思?

howzyao 发表于 2022-9-18 23:48:36

能不能按照古代写法:把大括号写到一行语句的下面,一行,只写一句,写清楚?

人造人 发表于 2022-9-19 00:40:59

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

typedef int DataType;

struct Node;
typedef struct Node *PNode;
typedef struct Node *LinkList;
struct Node {
    DataType info;
    PNode link;
};

LinkList createNullList_link(void) {
    LinkList llist;
    /*申请表头结点空间*/
    llist = malloc(sizeof(*llist));
    if(llist != NULL) llist->link = NULL;
    else printf("Out of space!\n"); /*创建失败*/
    return llist;
}

int insertPost_link(LinkList llist, PNode p, DataType x) {
    PNode q = malloc(sizeof(*q)); /*申请新结点*/
    if(q == NULL) {
      printf("Out of Space!\n");
      return 0;
    } else {
      q->info = x;
      //q->link = p->link;      // 谜之操作
      q->link = NULL;
      p->link = q;
      return 1;
    }
}

#if 0
int deleteV_link(LinkList llist, DataType x) {
    PNode p, q;
    p = llist;
    if(p == NULL)
      return 0;
    while(p->link != NULL && p->link->info != x)
      p = p->link;      /*找值为x的结点的前驱结点的存储位置*/
    if(p->link == NULL) { /* 没找到值为x的结点*/
      printf("Not exist!\n ");
      return 0;
    } else {
      q = p->link;       /* 找到值为x的结点*/
      p->link = q->link; /* 删除该结点*/
      free(q);
      return 1;
    }
}
#endif

// 你是不是忘记写这个函数了?
void free_link(LinkList list) {
    if(!list) return;
    free_link(list->link);
    free(list);
}

int main(void) {
    LinkList m = createNullList_link();
    //PNode a = malloc(sizeof(*a));
    //m = a;      // 谜之操作
    PNode a = m;
    insertPost_link(m, a, 1);
    PNode temp = m->link;
    while(temp != NULL) {
      printf("%d ", temp->info);
      temp = temp->link;
    }
    free_link(m);
    puts("");
    return 0;
}

不会代码的菜鱼 发表于 2022-9-19 17:27:25

ba21 发表于 2022-9-18 20:39
代码太杂乱

m = a; 是什么意思?

把a的地址赋给m,m是指针

不会代码的菜鱼 发表于 2022-9-19 17:33:11

人造人 发表于 2022-9-19 00:40


把q->link设置成null不就不能完成随意位置插入单链表吗

不会代码的菜鱼 发表于 2022-9-19 17:40:55

howzyao 发表于 2022-9-18 23:48
能不能按照古代写法:把大括号写到一行语句的下面,一行,只写一句,写清楚?

没有太乱吧,都是一行一句

不会代码的菜鱼 发表于 2022-9-19 17:52:08

人造人 发表于 2022-9-19 00:40


//q->link = p->link;
确实是这么教的

人造人 发表于 2022-9-19 19:05:19

不会代码的菜鱼 发表于 2022-9-19 17:33
把q->link设置成null不就不能完成随意位置插入单链表吗

什么?

不会代码的菜鱼 发表于 2022-9-19 20:05:50

能用是能用,但和教学课件,和网上资源不一样,b站上的也是这么写的

不会代码的菜鱼 发表于 2022-9-19 20:06:22

人造人 发表于 2022-9-19 19:05
什么?


能用是能用,但和教学课件,和网上资源不一样,b站上的也是这么写的

人造人 发表于 2022-9-19 20:19:56

不会代码的菜鱼 发表于 2022-9-19 20:06
能用是能用,但和教学课件,和网上资源不一样,b站上的也是这么写的

是吗?
页: [1]
查看完整版本: 引发了未经处理的异常:读取访问权限冲突。求修改解惑