| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1940 人关注过本帖
标题:数据结构单链表程序错误,请大家帮忙看看该怎么改?
只看楼主 加入收藏
kxddbb
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-10-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
数据结构单链表程序错误,请大家帮忙看看该怎么改?
程序要求单链表的建立,查找,插入和删除,除了main函数是我自己写的以外的函数都是直接抄了书上的,但因为自己C语言没学好,所以程序有很多问题,目前程序上没有语法问题,但运行到查找时就没办法继续下去了,自己调试了很多遍也不知道该怎么去改,希望有人能帮我看看该怎么改,最好能告诉我原因在哪,非常感谢!
#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define FALSE 0
#define TRUE 1
typedef int ElemType;
typedef struct LNode
{
    ElemType data;
    struct LNode *next;
}LNode, *Linklist;
void CreateListR(Linklist L)
{
    int x; Linklist p;
    L = (Linklist)malloc(sizeof (LNode));
    p = L;
    scanf_s("%d", &x);
    while (x != -999)
    {
        p->next = (Linklist)malloc(sizeof (LNode));
        p = p->next;
        p->data = x;
        scanf_s("%d", &x);
    }
    p->next = NULL;
}
void CreatelistF(Linklist L)
{
    int x; Linklist s;
    L = (Linklist)malloc(sizeof (LNode));
    L->next = NULL;
    scanf_s("%d", &x);
    while (x != -999)
    {
        s = (Linklist)malloc(sizeof (LNode));
        s->data = x;
        s->next = L->next; L->next = s;
        scanf_s("%d", &x);
    }
}
Linklist Locate(Linklist L, ElemType item)
{
    Linklist p;
    printf_s("%d", &p);
    p = L->next;

    while (p&&p->data != item)
    {
        p = p->next;
    }
    if (!p) return NULL;
    else return (p);
}
int Insert(Linklist L, int i, ElemType item)
{
    Linklist p, s; p = L;
    int j = 0;
    while (p&&j<i - 1)
    {
        p = p->next; ++j;
    }
    if (!p || j>j - 1) return FALSE;
    s = (Linklist)malloc(sizeof (LNode));
    s->data = item;
    s->next = p->next; p->next = s;
    return TRUE;
}
int Delete(Linklist L, int i)
{
    Linklist q, p;
    int j;
    q = L; j = 0;
    while (q&&j<j - 1)
    {
        q = q->next; ++j;
    }
    if (!q || j>i - 1) return FALSE;
    p = q->next;
    q->next = p->next;
    free(p);
    return TRUE;
}
int  main()
{
    LNode student;
    printf("尾插法请输入学号:");
    CreateListR(&student);
    printf_s("---------------------------\n");
    printf_s("头插法请输入学号:");
    CreatelistF(&student);
    printf_s("----------------------------\n");
    int i;
    ElemType x;
    printf("请输入要查找的学号:");
    scanf_s("%d", &x);
    Locate(&student, x);
    printf("请输入要插入的学号位置:");
    scanf_s("%d", &i);
    printf_s("请输入要插入的学号:");
    scanf_s("%d", &x);
    Insert(&student, i, x);
    printf("请输入要删除的学号位置:");
    scanf_s("%d", &x);
    Delete(&student, x);
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: C语言 链表程序 include 最好 
2015-10-23 11:10
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:20 
程序代码:
Linklist Locate(Linklist L, ElemType item)
{
    Linklist p;
    printf_s("%d", &p);
    p = L->next;

    while (p&&p->data != item)
    {
        p = p->next;
    }
    if (!p) return NULL;//此处建议既然没找到用打印语句即可
    else return (p);
}

程序代码:
 ElemType x;
    printf("请输入要查找的学号:");
    scanf_s("%d", &x);
    Locate(&student, x);//有返回值的函数调用,当然返回了也不知道怎么用

剑栈风樯各苦辛,别时冰雪到时春
2015-10-23 12:45
kxddbb
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-10-23
收藏
得分:0 
回复 2楼 林月儿
那x那里我该怎么改呢?
2015-10-23 13:47
快速回复:数据结构单链表程序错误,请大家帮忙看看该怎么改?
数据加载中...
 
   



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

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