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

请哪位高手给看看这个代码的错误怎么修改

古故谷 发布于 2010-10-24 09:05, 583 次点击
#include<stdio.h>
typedef int Status
typedef struct LNode
{   
    char data;
    struct LNode *next;
}LNode,*LinkList;
Status InitList(LinkList L);
{
    L=(char*)malloc(1*sizeof(LNode));
    if(!L) exit (-2);
    return 1;
}
Status ListInsert_L(LinkList &L,int i,char e)
{
    p=L;
    j=0;
    while(p&&j<i-1)
    {
        p=p.next;
        ++j;
    }
    if(!p||j>i-1)
        return 0;
    s=(LinkList)malloc(sizeof(LNode));
    s.data=e;
    s.next=p.next;
    p.next=s;
    return 1;
}
Status ListDelete_L(LinkList &L,int i,char &e)
{
    p=L;j=0;
    while(p.next&&j<i-1)
    {
        p=p.next;
        ++j;
    }
    if(!(p.next)||j>i-1)
        return 0;
    q=p.next;
    p.next=q.next;
    e=q.next;
    free(q);
    return 1;
}
void main()
{
    int n=1,a=1,b;
    char f;
    InitList(L);
    while(n<=26)
    {
         ListInsert_L(L,n,n+96);
         n++;
    }
    printf("如果你想插入一个字母请输入:"1";如果你想删除一个字母请输入:"0"");
    scanf("%d",&b);
    if(a==b)
    {
        printf("请输入你想要插入的位置:");
        scanf("%d",&n);
        printf("请输入你想要插入的字母:");
        scanf("%c",&f);
        ListInsert_L(L,n,f);
    }
    else
    {
        printf("请输入你想要删除的位置:");
        scanf("%d",&n);
        ListDletet_L(L,n,f);
    }
}


8 回复
#2
易哓天2010-10-24 09:57
#include<stdio.h>
# include<stdlib.h>
# include<string.h>
typedef   int Status;
typedef struct LNode
{   
    char data;
    struct LNode *next;
}LNode,*LinkList;
Status InitList(LinkList &L)
{
    L=(LinkList)malloc(sizeof(LNode));
    L->next=NULL;
    return (1);
}
Status ListInsert_L(LinkList &L,int i,char e)
{
    LinkList p,s;
    int j;
    p=L;
    j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1)
        return 0;
    s=(LinkList)malloc(sizeof(LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return 1;
}
Status ListDelete_L(LinkList &L,int i,char &e)
{
LinkList p,q;
int  j;
    p=L;j=0;
    while(p->next&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
        return 0;
    q=p->next;
    p->next=q->next;
    e=q->data;
    free(q);
    return 1;
}
void main()
{
    int n=1,a=1,b;
    char f;
    LinkList  L;
    InitList(L);
    while(n<=26)
    {
         ListInsert_L(L,n,n+96);
         n++;
    }
    printf("如果你想插入一个字母请输入:1;如果你想删除一个字母请输入:0");
    scanf("%d",&b);
    if(a==b)
    {
        printf("请输入你想要插入的位置:");
        scanf("%d",&n);
        printf("请输入你想要插入的字母:");
        scanf("%c",&f);
        ListInsert_L(L,n,f);
    }
    else
    {
        printf("请输入你想要删除的位置:");
        scanf("%d",&n);
       ListDelete_L(L,n,f);
    }
}

程序能不能执行,我就不知道了,你自己先思考一下吧,原程序错误挺多的,
#3
寒风中的细雨2010-10-24 12:17
    if(1==b)
    {
        printf("请输入你想要插入的位置:");
        scanf("%d",&n);
        getchar();
        printf("请输入你想要插入的字母:");
        scanf("%c",&f);
        ListInsert_L(L,n,f);
    }
#4
古故谷2010-10-25 11:17
回复 2楼 易哓天
多谢指正!
#5
古故谷2010-10-25 11:46
回复 3楼 寒风中的细雨
谢谢赐教
#6
易哓天2010-10-25 12:22
回复 4楼 古故谷
大家相互学习,一起进步,编程愉快
#7
取而代之2010-10-25 21:10
#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef struct LNode
{   
    char data;
    struct LNode *next;
}LNode,*LinkList;

Status InitList(LinkList &L)
{
    L=(LinkList )malloc(sizeof(LNode));
    if(!L) exit (-2);
    return 1;
}
Status ListInsert_L(LinkList &L,int i,char e)
{
    LinkList p,s;
    p=L;
    int  j=0;
    while(p&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!p||j>i-1)
        return 0;
    s=(LinkList)malloc(sizeof(LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
    return 1;
}
Status ListDelete_L(LinkList &L,int i,char &e)
{
    LinkList p,q;
    p=L;
    int j=0;
    while(p->next&&j<i-1)
    {
        p=p->next;
        ++j;
    }
    if(!(p->next)||j>i-1)
        return 0;
    q=p->next;
    p->next=q->next;
    e=q->data;
    free(q);
    return 1;
}
void main()
{
    int n=1,a=1,b;
    char f;
    LinkList L;
    InitList(L);
    while(n<=26)
    {
         ListInsert_L(L,n,n+96);
         n++;
    }
    scanf("%d",&b);
    if(a==b)
    {
        printf("请输入你想要插入的位置:");
        scanf("%d",&n);
        printf("请输入你想要插入的字母:");
        scanf("%c",&f);
        ListInsert_L(L,n,f);
    }
    else
    {
        printf("请输入你想要删除的位置:");
        scanf("%d",&n);
        ListDelete_L(L,n,f);
    }
}


兄弟,错了这么多,怎么混啊,还是去看看书吧。
#8
古故谷2010-10-25 22:28
回复 7楼 取而代之
老兄说的是,是应当好好看看书。不过我是个初学者,用的清华的教材,不大好懂,以后有什么问题还希望老兄多多指教。
#9
我爱你孙雪琦2010-10-26 11:28
我才刚刚大一,哎也是这个专业的。看不懂呀现在,不知道哪位高手能帮我解决下以后的出入。详细告知下谢谢!
1