标题:链表问题
只看楼主
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
结帖率:8.33%
已结贴  问题点数:20 回复次数:6 
链表问题
#include
#include
#include
typedef struct node{
   int data;
   struct node *next;
}Linklist;
void createlist(Linklist * L,int n)
{   
    int i;Linklist * p;
    L=(Linklist *)malloc(sizeof(Linklist));//先建立一个带头结点的单链表
    L->next=NULL;
    for(i=n;i>0;--i)
    {
        p=(Linklist *)malloc(sizeof(Linklist));
        printf("请输入数据!\n");
        scanf("%d",&p->data);
        p->next=L->next;L->next=p; //头插法建立链表


    }
    printf("建立链表成功!\n");

}
void print(Linklist *L)
{
    Linklist *p;
    p=L->next;
    while(p!=NULL)
    {
      p=p->next;
      printf("%d",p->data);
    }
}
int leng(Linklist *L)
{
    int i=0;Linklist *p;
    p=L->next;
    while(p)
    {
        p=p->next;
        ++i;
    }
    return i;
}
int main()
{   
    Linklist L;
    createlist(& L,5);
    printf("链表的长度是%d\n",leng(& L));
//    print(& L);
    return 0;
}
为什么在建立链表成功之后,他的长度打印不出来,而是出现异常
搜索更多相关主题的帖子: next include 
2012-12-14 14:08
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
得分:20 
程序代码:
#include "stdafx.h"

#include<stdio.h>
#include<stdlib.h>
#include<iostream.h>


typedef struct node
{
   int data;
   struct node *next;
}Linklist;

void createlist(Linklist*& L,int n)
{  
    int i;
   
    Linklist * p;
    L=(Linklist *)malloc(sizeof(Linklist));//先建立一个带头结点的单链表
    L->next=NULL;

    for(i=n;i>0;--i)
    {
        p=(Linklist *)malloc(sizeof(Linklist));
        printf("请输入数据!\n");
        scanf("%d",&p->data);
        p->next=L->next;L->next=p; //头插法建立链表
    }

    printf("建立链表成功!\n");

}
void print(Linklist *L)
{
    Linklist *p;
    p=L->next;
    while(p!=NULL)
    {
      p=p->next;
      printf("%d",p->data);
    }
}

int leng(Linklist *L)
{
    //指针访问前,一定要做检查
    //定义指针变量,马上初始化,防止野指针被访问
    //如果海量代码出错,排错是很头疼的

    if(L == NULL)
    {
        return 0;
    }

    int i=0;
    Linklist *p = NULL;
    p=L->next;
    while(p)
    {
        p=p->next;
        ++i;
    }
    return i;
}

int main()
{  
    //Linklist L;
    //createlist(& L,5);
    //printf("链表的长度是%d\n", leng(&L));

    Linklist* L;

    createlist(L, 5);

    printf("链表的长度是%d\n", leng(L));

    return 0;
}
2012-12-14 15:10
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
谢谢你
2012-12-14 21:46
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
void createlist(Linklist*& L,int n) 中的Linklist*& L是什么意思,为什么不能直接写Linklist *L,谢谢
2012-12-14 21:58
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
是引用还是取地址
2012-12-14 22:00
cwl168
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2012-12-14
得分:0 
除掉就不行
2012-12-14 22:08
crystall
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:184
专家分:809
注 册:2012-12-1
得分:0 
回复 5楼 cwl168
引用
2012-12-15 09:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-391238-1-1.html




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

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