| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 692 人关注过本帖
标题:麻烦哪位大佬帮我看一下我的代码,调试一半出了问题,可能还有其他问题,下 ...
取消只看楼主 加入收藏
路人甲3
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2022-9-27
结帖率:100%
收藏
已结贴  问题点数:13 回复次数:1 
麻烦哪位大佬帮我看一下我的代码,调试一半出了问题,可能还有其他问题,下面是我的错误代码
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
    int data;
    int length = 0;
    struct node* next;
}node,*linklist;
linklist createlist(linklist L) {
    L = (linklist)malloc(sizeof(node));
    L->next = NULL;
    node* p;
    int x;
    printf("请输入十个数字:\n");
    for (int i = 0; i < 10; i++)
    {
        p = (linklist)malloc(sizeof(node));
        scanf("%d", &x);
        p->data = x;
        p->next = L->next;
        L->next = p;
        L->length++;
    }
    return L;
}
int insert(linklist L)
{
    int n, x;
    printf("请输入想插入的结点位置:\n");
    scanf("%d", &n);
    printf("请输入你想插入的数:\n");
    scanf("%d", &x);
    node* p;
    p = (linklist)malloc(sizeof(node));
    p = L;
    int i = 1;
    while (p&&i < n-1)
    {
        p = p->next;
        i++;
    }
    if (!p||i >n - 1)
        printf("无法插入!\n");
    return 0;
    node *r;
    r = (linklist)malloc(sizeof(node));
    r->data = x;
    r->next = p->next;
    p->next = r;
    L->length++;
    return 1;
}
int deletelist(linklist L)
{
    int i;
    printf("要删除第几个数字:");
    scanf("%d", &i);
    node* p, *q;
    int j = 2;
    p = L->next;
    while (p->next && j < i)
    {
        p = p->next;
        j++;
    }
    if (!p->next || j > i)
        printf("第%d个数字不存在!",i);
    q = p->next;
    p->next = q->next;
    free(q);
    return 1;
}
void printlist(linklist L)
{
    linklist p;
    p = L;
    while(p)
    {
        printf("%d", p->data);
        p= p->next;
    }
    printf("\n");
}
int main()
{
    int a;
    linklist L;
    L = (linklist)malloc(sizeof(node));
    createlist(L);
    while (1)
    {
        printf("             请输入操作选项:\n");
        printf("           1插入;2删除;3查看\n");
        scanf("%d", &a);
        switch (a)
        {
        case 1:insert(L);
            break;
        case 2:deletelist(L);
            break;
        case 3:printlist(L);
            break;
        default:printf("输入错误,请重新输入!\n");
            break;
        }
    }
    return 0;
}

调试的时候
printlist函数里面
printf("%d", p->data); 会出现下面的显示:
引发了异常: 读取访问权限冲突。
p 是 0xFFFFFFFFFFFFFFFF。我不理解
搜索更多相关主题的帖子: int next 输入 printf node 
2023-04-16 22:54
路人甲3
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2022-9-27
收藏
得分:0 
回复 3楼 rjsp
额大佬的代码我貌似很难理解,其实这就是一个简单的单链表插入和删除,我用的是Visual Studio lnstaller软件,编译器没有报错,但调试一半就会跳转到代码里面,说有异常,咋改都还是异常就搞不懂了
2023-04-17 11:36
快速回复:麻烦哪位大佬帮我看一下我的代码,调试一半出了问题,可能还有其他问题 ...
数据加载中...
 
   



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

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