| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 400 人关注过本帖
标题:单链表的建立和删除的代码出现了错误,谁能帮调试一下
只看楼主 加入收藏
庄小琳
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-22
收藏
 问题点数:0 回复次数:2 
单链表的建立和删除的代码出现了错误,谁能帮调试一下
#include<stdio.h>
#include<malloc.h>
#define ERROR 0;
typedef struct LNode
{
    int data;
    struct LNode *next;
}LNode,*LinkList;
LinkList lnitList(LinkList L)
{
    LinkList node=NULL;
    node=(LinkList)malloc(sizeof(LNode));
    if(!node)
    {
    return ERROR;
    }
node->next=NULL;
L=node;
return L;
}
int ListLength(LinkList L)
{
    LinkList p=NULL;
    int count=0;
    p=L;
    while(p->next)
    {
        count++;
        p=p->next;
    }
    return count;
}
LinkList CreateList_L(LinkList L,int n)
{
    int i;
    LinkList p=NULL;
    for(i=n;i>0;i--)
    {
        p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
    return L;
}
LinkList Listlnsert(LinkList L,int i,int e)
{
    int j=0;
LinkList s=NULL,p=NULL;
p=L;
while(p&&j<i-1)
{
    p=p->next;
    j++;
}
if(!p||j>i-1)
{
    printf("输入的位置不合法!!!\n");
    return L;
}
s=(LinkList)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
return L;
}
LinkList ListDelete(LinkList L,int i)
int j;
LinkList q=NULL,p=NULL;
P=L;
j=0;
while(p->next&&j<i-1)
{
    p=p->next;
    j++;
}
if(!p->next||j>i-1)
{
    printf("输入的位置不合法!!!\n");
        return L;
}
q=p->next;
p->next=q->next;
free(q);
return L;
}
int GetElem(LinkList L,int i)
{
    int j,e;
    LinkList p=NULL;
    if(i<1||i>ListLength(L))
    {
        printf("输入的位置不合法!!!\n");
        return;
    }
    p=L->next;
    j=1;
    while(j<i)
    {
        p=p->next;
        j++;
    }
    e=p->data;
printf("第%d位的数据元素为%d\n",i,e);
}
void menu()
{
    printf("***********目录***********\n");
    printf("输入单链表中的各元素值   1\n");
    printf("在单链表中插入数据元素   2\n");
    printf("在单链表中删除数据元素   3\n");
    printf("          结束程序       0\n");
    printf("**************************\n");
}
void main()
{
    int n,m,i,e;
    LinkList L =NULL;p=NULL;
    L=lnitList(L);
    printf("请输入元素个数:");
    scanf("%d",&n);
    printf("依次输入%d个数数据元素:",n);
    L=CreateList_L(L,n);
    do
    {
        printf("\n\n");
        menu();
        printf("请输入你的选择:")
            scanf("%d",&m);
        switch(m)
        {
        case 1:
            printf("现在链表的元素为:");
            p=L->next;
            while(p!=NULL)
            {
                printf("%d",p->data);
                p=p->next;
            }
            printf("\n");
            break;
        case 2:
            printf("依次输入插入位置和数据元素(空格隔开):");
                scanf("%d%d",&i,&e);
            L=Listlnsert(L,i,e);
            break;
        case 3:
printf ("输入需要删除的元素位置的:");
        scanf("%d",&i);
L=Listlnsert(L,i);
break;
case();
    printf(已结束程序!!!\n")
        break;
    default;
        printf("输入错误!!!\n");
          }        }
       }while(m!=0);
    }





)从键盘上依次输入21、18、30、75、42、56,逆序创建单链表,并输出单链表中的各元素值。
(3)分别在单链表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值。
(4)删除单链表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值。

[ 本帖最后由 庄小琳 于 2013-6-22 10:29 编辑 ]
搜索更多相关主题的帖子: count return include 
2013-06-22 10:28
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
错误太多,有些小错误比如逗号、括号写成中文格式我都不屑于说了;具体你自己对照吧,你程序的主框架我没改,自己找错吧

还有一点,数据结构,main函数里不要有太多代码...
程序代码:
#include<stdio.h>
#include<malloc.h>
#define ERROR 0
typedef struct LNode
{
    int data;
    struct LNode *next;
}LNode,*LinkList;

LinkList lnitList(LinkList L)
{
    LinkList node=NULL;
    node=(LinkList)malloc(sizeof(LNode));
    if(!node)
    {
    return ERROR;
    }
node->next=NULL;
L=node;
return L;
}

int ListLength(LinkList L)
{
    LinkList p=NULL;
    int count=0;
    p=L;
    while(p->next)
    {
        count++;
        p=p->next;
    }
    return count;
}

LinkList CreateList_L(LinkList L,int n)
{
    int i;
    LinkList p=NULL;
    for(i=n;i>0;i--)
    {
        p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
    return L;
}

LinkList Listlnsert(LinkList L,int i,int e)
{
    int j=0;
    LinkList s=NULL,p=NULL;
    p=L;
    while(p&&j<i-1)
    {
        p=p->next;
        j++;
    }
    if(!p||j>i-1)
    {
        printf("输入的位置不合法!!!\n");
        return L;
    }
    s=(LinkList)malloc(sizeof(LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return L;
}

LinkList ListDelete(LinkList L,int i)
{
    int j;
    LinkList q=NULL,p=NULL;
    p=L;
    j=0;
    while(p->next&&j<i-1)
    {
        p=p->next;
        j++;
    }
    if(!p->next||j>i-1)
    {
        printf("输入的位置不合法!!!\n");
        return L;
    }
    q=p->next;
    p->next=q->next;
    free(q);
    return L;
}

int GetElem(LinkList L,int i)
{
    int j,e;
    LinkList p=NULL;
    if(i<1||i>ListLength(L))
    {
        printf("输入的位置不合法!!!\n");
        return ERROR;
    }
    p=L->next;
    j=1;
    while(j<i)
    {
        p=p->next;
        j++;
    }
    e=p->data;
    printf("第%d位的数据元素为%d\n",i,e);
    return e;
}

void menu()
{
    printf("***********目录***********\n");
    printf("输入单链表中的各元素值   1\n");
    printf("在单链表中插入数据元素   2\n");
    printf("在单链表中删除数据元素   3\n");
    printf("          结束程序       0\n");
    printf("**************************\n");
}

void main()
{
    int n,m,i,e;
    LinkList L=NULL,p=NULL;
    L=lnitList(L);
    printf("请输入元素个数:");
    scanf("%d",&n);
    printf("依次输入%d个数数据元素:",n);
    L=CreateList_L(L,n);
    do
    {
        printf("\n\n");
        menu();
        printf("请输入你的选择:");
        scanf("%d",&m);
        switch(m)
        {
        case 1:
            printf("现在链表的元素为:");
            p=L->next;
            while(p!=NULL)
            {
                printf("%d",p->data);
                p=p->next;
            }
            printf("\n");
            break;
        case 2:
            printf("依次输入插入位置和数据元素(空格隔开):");
                scanf("%d%d",&i,&e);
            L=Listlnsert(L,i,e);
            break;
        case 3:
            printf ("输入需要删除的元素位置的:");
            scanf("%d",&i);
            L=ListDelete(L,i);
            break;
        case 0:
            printf("已结束程序!!!\n");
                break;
        default:
            printf("输入错误!!!\n");
        }
    }while(m!=0);
}




三十年河东,三十年河西,莫欺少年穷!
2013-06-22 13:54
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
不知道楼主的这个问题解决了没有,留个

爪印,

回头再看


学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-22 20:09
快速回复:单链表的建立和删除的代码出现了错误,谁能帮调试一下
数据加载中...
 
   



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

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