| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 420 人关注过本帖
标题:一个关于链表的问题
只看楼主 加入收藏
cai85204550
Rank: 1
等 级:新手上路
帖 子:40
专家分:4
注 册:2011-5-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
一个关于链表的问题
一个关于线性表的问题
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
typedef struct list
{
    int data;
    struct list *next;
}list;
list *creatlist(list *L,int n)//创建空链表,第一个函数
{
    list *p;
    int i;
    L=(list *)malloc(sizeof(list));
    L->next=NULL;
    p=(list *)malloc(sizeof(list));
    for(i=0;i<n;i++)
    {
        if(p==NULL)
        {
            printf("申请失败!");
            exit(0);
        }        
        p->next=L->next;
        L->next=p;
    }
    return L;
}
Inputdata(list *L,int n)//向空链表输入数据,第二个函数
{
    list *head;
    int i;
    for(i=0;i<n;i++)
    {
        L=L->next;
        scanf("%d",&L->data);
    }
}
int compare(list *L,int e)//用e和链表中的元素比较,第一个和e相等的元素返回,第三个函数
{
    int a,data;
    list *head=NULL;
    while(L!=NULL)
    {
        if(L->data==e)
        {
            return e;
        }
        else
        {
            L=L->next;
        }
    }
    return 0;

}
int getelem(list *L,int i)//返回链表中的第i个元素,第四个函数
{
    int e,data,j;
    list *head;
    if(i<1)
    {
        printf("输入的数错误!");
        exit(0);
    }   
    for(j=1;j<i;j++)
    {
        L=L->next;
    }
    L=L->next;
    e=L->data;
    return e;
}
上面的是个头文件
#include"01.h"
main()
{
    int n,data,e,a,i,b;
    list *L=NULL;
    printf("请输入线性表的长度:\n");
    scanf("%d",&n);
    L=creatlist(L,n);   
    Inputdata(L,n);
    printf("请输入e:");
    scanf("%d",&e);
    a=compare(L,e);
    printf("a=%d\n",a);
    printf("请输入i:");
    scanf("%d",&i);
    b=getelem(L,i);
    printf("b=%d\n",b);
}
整个程序语法没错,但第三第四个函数输出的结果错误。。。望高手赐教。。。
搜索更多相关主题的帖子: include return 线性表 
2011-09-29 23:45
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:20 
程序代码:
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
typedef struct list
{
    int data;
    struct list *next;
}list;
list *creatlist(list *L,int n)//创建空链表,第一个函数
{
    list *p;
    int i=0;
    L=(list *)malloc(sizeof(list));
//    L->data=0;
    L->next=NULL;
//    p=(list *)malloc(sizeof(list));此行应该放在

    for(i=0;i<n;i++)
    {
        p=(list *)malloc(sizeof(list));
        if(p==NULL)
        {
            printf("申请失败!");
            exit(0);
        }       
        p->next=L->next;
        L->next=p;
    }
    return L;
    /*    for(i=n-1;i>=1;i--)
    {
        p=(list *)malloc(sizeof(list));
        if(p==NULL)
        {
            printf("申请失败!");
            exit(0);
        }       
//        p->data=0;
        p->next=L;
        L=p;
    }
    return L;
    可以用以上语句为链表申请空间
    */
  
}
void Inputdata(list *L,int n)//向空链表输入数据,第二个函数
{
    list *head;
    int i;
    for(i=0;i<n;i++)
    {
    //    L=L->next;注意先赋值,再指向下一个节点
        scanf("%d",&L->data);
        L=L->next;
    }
}
int compare(list *L,int e)//用e和链表中的元素比较,第一个和e相等的元素返回,第三个函数
{
    int a,data;
    list *head=NULL;
    printf("L->data==e\n");
    while(L!=NULL)
    {
        if(L->data==e)
        {
            printf("L->data==e\n");
            return e;
        }
        else
        {
            L=L->next;
        }
    }
    printf("链表中没有与%d对应的节点。\n",e);///////////////
    return 0;

}
int getelem(list *L,int i,int n)//返回链表中的第i个元素,第四个函数//////////////////
{
    int e,data,j;
    list *head=L;//////不要改变L!!!
    if(i<1)
    {
        printf("输入的数错误!");
        exit(0);
    }
    if(i>n)
    {
        printf("超出链表长度!!");
        return 0;
    }
    for(j=1;j<i;j++)
    {
        head=head->next;//////
    }
   
    //L=L->next;//此行必须去掉!!!
    e=head->data;////
    return e;
}
//上面的是个头文件
//#include"01.h"
void main()
{
    int n,data,e,a,i,b=0;
    list *L=NULL;
    printf("请输入线性表的长度:\n");
    scanf("%d",&n);
    L=creatlist(L,n);   
    Inputdata(L,n);
    printf("请输入e:");
    scanf("%d",&e);
    a=compare(L,e);
    printf("a=%d\n",a);
    printf("请输入i:");
    scanf("%d",&i);
    b=getelem(L,i,n);
    printf("b=%d\n",b);
}
解析在代码注释里面。
2011-09-30 00:50
cai85204550
Rank: 1
等 级:新手上路
帖 子:40
专家分:4
注 册:2011-5-14
收藏
得分:0 
回复 2楼 laznrbfe
谢谢啊。。。。。
2011-09-30 10:44
快速回复:一个关于链表的问题
数据加载中...
 
   



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

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