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

大家帮个忙啊关于数据结构的,这个运行没错,但是有问题

tanghf1014 发布于 2010-11-05 11:36, 523 次点击
#include "stdio.h"
#include "conio.h" /*getch的头文件*/


/*.....................................定义单链表结构*/
typedef  struct  node{
    int data;/*每个元素数据信息*/
    struct node *next;/*存放后继元素的地址*/
} LNode ,*LinkList;


/*.....................................创建单链表*/
LinkList  Creat_LinkList(void )
{/*创建空单链表,入口参数:无;返回值:单链表的头指针,0代表创建失败,非0表成功*/
   int i;/*记录单链表数据个数*/
   LinkList p,h,s;
   h=(LinkList )malloc(sizeof(LNode));
   if (h)   /*确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表*/
       h->next=NULL;
   p=h;


   for(i=0;i<10;i++){
       s=(LinkList)malloc(sizeof(LNode));
       if(s)
           s->next=NULL;
       printf("qing shu ru di %d ge shu ju:",i+1);
       scanf("%d\n",&s->data);
       p->next=s;
       p=s;
   }
   return h;
}


/*......................................打印单链表*/
void Printfdanlianbiao(LinkList h){
    LinkList p,pre;
    p=h;
    while(p){
        p=p->next;
        printf("->%d",p->data);
    }

}


/*...........................................求单链表的长度 */
int  Length_LinkList (LinkList  H)
{/* 求单链表表长,入口参数:单链表头指针,出口参数:表长,-1表示
       单链表不存在。*/
   LinkList  p=H;   /* p指向头结点*/
   int  count= -1;  /*H带头结点所以从-1开始*/
   while ( p)
   { /* p所指的是第 count + 1 个结点*/  
          p=p->next;
          count++;
   }  /*while */
   return (count);
}

main()
{
    LinkList H;
    H=Creat_LinkList();
    Printfdanlianbiao(H);
    getch();
}


9 回复
#2
tanghf10142010-11-05 11:39
只有本站会员才能查看附件,请 登录

就是第二行为什么输出一个数才显示第三行,跟其它行不一样,而且这个程序还把第二行这个数当成第二个来运行的,第十行最后输出变成0了
各位大侠有的知道帮忙看看
感激涕零!!
#3
tanghf10142010-11-06 12:18
拜托各位了!!!
#4
小K鸟2010-11-06 15:31
我弄了一下,但是没有出来,等结果。。。要有了通知一下哈,呵呵,,

[ 本帖最后由 小K鸟 于 2010-11-6 15:32 编辑 ]
#5
tanghf10142010-11-06 18:15
嗯,那就谢谢K哥了
#6
寒风中的细雨2010-11-06 18:54
/*#include "stdio.h"
#include "conio.h" /*getch的头文件*/

#include <stdio.h>
#include <conio.h>
#include <malloc.h>
#include <stdlib.h>


/*.....................................定义单链表结构*/
typedef  struct  node
{
    int data;/*每个元素数据信息*/
    struct node *next;/*存放后继元素的地址*/
} LNode ,*LinkList;


/*.....................................创建单链表*/
LinkList  Creat_LinkList(void)
{/*创建空单链表,入口参数:无;返回值:单链表的头指针,0代表创建失败,非0表成功*/
   int i;/*记录单链表数据个数*/
   LinkList p,h,s;
   h = (LinkList ) malloc (sizeof(LNode));
   if (h)   /*确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表*/
   {
       h->next=NULL;
   }
   else
   {
       exit(-1);
   }
   p = h;

   for(i=0; i<10; i++)
   {
       s= (LinkList) malloc (sizeof(LNode));
       if(s)
       {
           s->next=NULL;
       }
       else
       {
           exit(-1);
       }
       printf("请输入第 %d 个数据:",i+1);
       //scanf("%d\n",&s->data);
       scanf("%d", &s->data);

       s->next = p->next;
       p->next = s;
       //p=s;
   }
   return h;
}


/*......................................打印单链表*/
void Printfdanlianbiao(LinkList h)
{
    LinkList p;
 /*   p = h;
    while( p )
    {//当p = NULL的时候 printf语句 是错误的 所以不能 这么写
        p = p->next;
        printf("->%d", p->data);
    }
*/
    p = h->next;
    while( p )
    {
        printf("->%d ", p->data);
        p = p->next;
    }
    putchar('\n');
}


/*...........................................求单链表的长度 */
int  Length_LinkList (LinkList  H)
{/* 求单链表表长,入口参数:单链表头指针,出口参数:表长,-1表示
       单链表不存在。*/
   LinkList  p = H;   /* p指向头结点*/
   int  count= -1;  /*H带头结点所以从-1开始*/

   while ( p )
   { /* p所指的是第 count + 1 个结点*/  
          p = p->next;
          count++;
   }  /*while */
   printf("链表的长度为:%d\n", count);
   return count;
}

int main()
{
    LinkList H;
    H = Creat_LinkList();
    Printfdanlianbiao( H );
    Length_LinkList( H );
    getch();

    return 0;
}

#7
tanghf10142010-11-06 20:12
强大的版主,感谢了
#8
tanghf10142010-11-06 20:24
回复 6楼 寒风中的细雨
#include "stdio.h"
#include "conio.h" /*getch的头文件*/


/*.....................................定义单链表结构*/
typedef  struct  node{
    int data;/*每个元素数据信息*/
    struct node *next;/*存放后继元素的地址*/
} LNode ,*LinkList;


/*.....................................创建单链表*/
LinkList  Creat_LinkList(void )
{/*创建空单链表,入口参数:无;返回值:单链表的头指针,0代表创建失败,非0表成功*/
   int i;/*记录单链表数据个数*/
   LinkList p,h,s;
   h=(LinkList )malloc(sizeof(LNode));
   if (h)   /*确认创建头结点创建是否成功,若成功,修改单链表头结点的指针域为0表空表*/
       h->next=NULL;
   p=h;


   for(i=0;i<10;i++){
       s=(LinkList)malloc(sizeof(LNode));
       if(s)
           s->next=NULL;
       printf("qing shu ru di %d ge shu ju:",i+1);
       scanf("%d\n",&s->data);/*把这个\n去掉就好了,版主这是怎么一回事啊*/
       p->next=s;
       p=s;
   }
   return h;
}


/*......................................打印单链表*/
void Printfdanlianbiao(LinkList h){
    LinkList p,pre;
    p=h;
    while(p){
        p=p->next;
        printf("->%d",p->data);
    }

}


/*...........................................求单链表的长度 */
int  Length_LinkList (LinkList  H)
{/* 求单链表表长,入口参数:单链表头指针,出口参数:表长,-1表示
       单链表不存在。*/
   LinkList  p=H;   /* p指向头结点*/
   int  count= -1;  /*H带头结点所以从-1开始*/
   while ( p)
   { /* p所指的是第 count + 1 个结点*/  
          p=p->next;
          count++;
   }  /*while */
   return (count);
}

main()
{
    LinkList H;
    H=Creat_LinkList();
    Printfdanlianbiao(H);
    getch();
}


#9
寒风中的细雨2010-11-06 20:36
scanf 里面 没有格式控制
#10
tanghf10142010-11-06 20:55
噢,知道了版主,谢谢啦,看来得多看看C语言了
1