| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 369 人关注过本帖
标题:大家看看
只看楼主 加入收藏
阿韬
Rank: 2
等 级:论坛游民
帖 子:22
专家分:10
注 册:2010-10-1
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:2 
大家看看
我的这个单链表有什么问题,没有错误但就是运行出来的是那个调试程序的窗口,请大家帮忙看一下!
#include<stdio.h>
#include<stdlib.h>
struct list{
    int data;
    struct list *next;
};
int ListIniticate(struct list *head){
    struct list *p;
    head=&p;
    p=(struct list*)malloc(sizeof(struct list));
    p->next=NULL;
}
int ListLength(struct list *head){
    struct list *p=head;
    int size=0;
    while(p->next!=NULL){
        p=p->next;
        size++;
    }
    return size;
}
int ListInsert(struct list *head,int i,int x){
    struct list *p,*q;
    int j;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i-1){
        p=p->next;
        j++;
    }
    if(j!=i-1){
        printf("插入位置错误\n");
        return 0;
    }
    else{
    q=(struct list*)malloc(sizeof(struct list));
    q->data=x;
    q->next=p->next;
    p->next=q;
    return 1;
    }
}
int ListDelete(struct list *head,int i,int *x){
    struct list *p,*s;
    int j;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i-1&&p->next->next!=NULL){
        p=p->next;
        j++;
    }
    if(j!=i-1){
        printf("删除位置错误\n");
        return 0;
    }
    else{
    s=p->next;
    p->next=s->next;
    free(s);
    return 1;
    }
}
int ListGet(struct list *head,int i,int *x){
    int j;
    struct list *p;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i){
        p=p->next;
        j++;
    }
    if(j!=i){
        printf("错误\n");
        return 0;
    }
    else{
    x=p;
    *x=p->data;
    return 1;
    }
}
void main(void){
    struct list *head;
        int i,x;
        ListIniticate(head);
        for(i=0;i<10;i++)
            ListInsert(head,i,i++);
        ListDelete(head,4,&x);
            for(i=0;i<ListLength(head);i++){
                ListGet(head,i,&x);
                printf("%4d",x);
            }
    }
搜索更多相关主题的帖子: head next include return 
2010-10-01 10:49
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:10 
程序代码:
#include<stdio.h>
#include<stdlib.h>
struct list{
    int data;
    struct list *next;
};
int ListIniticate(struct list *head){
    struct list *p;
    head=p;//去掉地址符号
    p=(struct list*)malloc(sizeof(struct list));
    p->next=NULL;
    return 0;//加了一个return
}
int ListLength(struct list *head){
    struct list *p=head;
    int size=0;
    while(p->next!=NULL){
        p=p->next;
        size++;
    }
    return size;
}
int ListInsert(struct list *head,int i,int x){
    struct list *p,*q;
    int j;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i-1){
        p=p->next;
        j++;
    }
    if(j!=i-1){
        printf("插入位置错误\n");
        return 0;
    }
    else{
    q=(struct list*)malloc(sizeof(struct list));
    q->data=x;
    q->next=p->next;
    p->next=q;
    return 1;
    }
}
int ListDelete(struct list *head,int i,int *x){
    struct list *p,*s;
    int j;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i-1&&p->next->next!=NULL){
        p=p->next;
        j++;
    }
    if(j!=i-1){
        printf("删除位置错误\n");
        return 0;
    }
    else{
    s=p->next;
    p->next=s->next;
    free(s);
    return 1;
    }
}
int ListGet(struct list *head,int i,int *x){
    int j;
    struct list *p;
    p=head;
    j=-1;
    while(p->next!=NULL&&j<i){
        p=p->next;
        j++;
    }
    if(j!=i){
        printf("错误\n");
        return 0;
    }
    else{
    //x=p;//去掉这个,以为x是int型的,而p是struct list 型
    *x=p->data;
    return 1;
    }
}
void main(void){
    struct list *head;
        int i,x;
        ListIniticate(head);
        for(i=0;i<10;i++)
            ListInsert(head,i,i++);
        ListDelete(head,4,&x);
            for(i=0;i<ListLength(head);i++){
                ListGet(head,i,&x);
                printf("%4d",x);
            }
    } 
帮你改好了!没报错了!没调试不过!楼主自己调试下看对不!还有给你提个建议哈!就是以后发帖的时候代码最好加注释!别人看起来也容易点
2010-10-01 11:23
ltyjyufo
Rank: 9Rank: 9Rank: 9
来 自:未来
等 级:蜘蛛侠
威 望:2
帖 子:353
专家分:1166
注 册:2009-10-25
收藏
得分:10 
#include<stdio.h>
#include<stdlib.h>
struct list{
    int data;
    struct list *next;
};
int ListIniticate(struct list *head){
    struct list *p;
    head=&p;                               //什么意思???
    p=(struct list*)malloc(sizeof(struct list));
    p->next=NULL;                         //到底是返回,还是不用返回?
}
int ListLength(struct list *head){
    struct list *p=head;
    int size=0;
    while(p->next!=NULL){
        p=p->next;
        size++;
    }
    return size;
}
int ListInsert(struct list *head,int i,int x){
    struct list *p,*q; //用带头结点的链表好一点,在第一个结点里面存储链表的长度,当要在链表中插入数据时,一比较就知道你要插入的位置存在不存在,
    int j;             //如果不存在就直接返回,这样效率会高很多的.像你这样在链表很长的情况下就很费事,因为在最坏的情况下你要找到最后才是知道你
    p=head;           //好找的位置存在不存在
    j=-1;                           //好像等于0吧
    while(p->next!=NULL&&j<i-1){
        p=p->next;
        j++;
    }
    if(j!=i-1){
        printf("插入位置错误\n");
        return 0;
    }
    else{
    q=(struct list*)malloc(sizeof(struct list));
    q->data=x;
    q->next=p->next;
    p->next=q;
    return 1;
    }
}
int ListDelete(struct list *head,int i,int *x){
    struct list *p,*s;
    int j;
    p=head;
    j=-1;                            //??????
    while(p->next!=NULL&&j<i-1&&p->next->next!=NULL){
        p=p->next;
        j++;
    }
    if(j!=i-1){
        printf("删除位置错误\n");
        return 0;
    }
    else{
    s=p->next;
    p->next=s->next;
    free(s);
    return 1;
    }
}
int ListGet(struct list *head,int i,int *x){
    int j;
    struct list *p;
    p=head;
    j=-1;                            //????????????
    while(p->next!=NULL&&j<i){
        p=p->next;
        j++;
    }
    if(j!=i){
        printf("错误\n");
        return 0;
    }
    else{
    x=p;
    *x=p->data;
    return 1;
    }
}
void main(void){
    struct list *head;
        int i,x;
        ListIniticate(head);
        for(i=0;i<10;i++)
            ListInsert(head,i,i++);
        ListDelete(head,4,&x);
            for(i=0;i<ListLength(head);i++){
                ListGet(head,i,&x);
                printf("%4d",x);
            }
    }


   可能理解的不是很对,可能有改错了的地方。。。。。

翱翔天空的雄鹰固然令人羡慕,却容易被禁锢于牢笼之中,只有那夜色中的蝙蝠才是真正自由的飞翔者....
2010-10-01 15:43
快速回复:大家看看
数据加载中...
 
   



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

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