| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1326 人关注过本帖
标题:新手第一贴,关于建立链表,代码敲出来,头文件不会弄,求大神指教
只看楼主 加入收藏
小小软件
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2013-7-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
新手第一贴,关于建立链表,代码敲出来,头文件不会弄,求大神指教
#include "stdlib.h"
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
    long num;
    float score;
    struct student *next;
};
int n;
struct student *create()          /*此函数带回一个指向链表头的指针*/
{
    struct student *head,*p1,*p2;
    n=0;
    head=NULL;
    p1=p2=(struct student*)malloc(LEN);       //创建第一个结点
    scanf("%d,%f",&p1->num,&p2->score);
    p1->next=NULL;
    while(p1->num!=0)                         //应该把结点加入链表
    {
        ++n;
        if (n==1)                            //是第一个结点,做表头
            head=p1;
        else
            p2->next=p1;                     //不是第一个结点,做表尾
        p2=p1;
        p1=(struct student *)malloc(LEN);     //开辟下一个结点
        scanf("%d,%f",&p1->num,&p1->score);
        p1->next=NULL;
    }
    free(p1);
    return(head);
}
——————————————————这里显示scanf标识符无法识别,我加了stdio.h头文件又出现一大堆问题,怎么办??
搜索更多相关主题的帖子: include create 
2013-07-19 18:15
小小软件
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2013-7-19
收藏
得分:0 
坐等回复

我不是大神,我只是一个路人
2013-07-19 18:49
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:10 
#include <stdio.h>
#include<stdlib.h>
应该是这两个了

思考赐予新生,时间在于定义
2013-07-19 19:37
小小软件
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2013-7-19
收藏
得分:0 
回复 3楼 love云彩
你试着把我代码复制过去运行一下试试??帮我找一下问题在哪

我不是大神,我只是一个路人
2013-07-19 20:53
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
你这里面只是写了一个创建链表的代码,你的主函数哪里去了?写完主函数再把完整的代码贴上来,我帮你找问题

思考赐予新生,时间在于定义
2013-07-19 21:05
小小软件
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2013-7-19
收藏
得分:0 
回复 5楼 love云彩
其实我就是不会写主函数代码......

我不是大神,我只是一个路人
2013-07-19 23:15
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
以下是引用小小软件在2013-7-19 23:15:08的发言:

其实我就是不会写主函数代码......

找一个比较烂的代码给你看看,自己理解一下吧,这是单向链表
程序代码:
#include <stdio.h>
#include<stdlib.h>
#define  LEN  sizeof(struct node)
struct node
{
int data;
struct node  *next;
};
int main()
{     struct  node  *p, *pl,* head;
          head=p=(struct node * )malloc(LEN);
          printf("请输入数据成员:\n");
          scanf("%d",&p->data);//头结点的数据成员
          while(p->data!=0)   //给出0结束条件,退出循环
          {    pl=p;
               p=(struct node * )malloc(LEN);
                  scanf("%d",&p->data);//中间结点数据成员
                  pl->next=p;//中间结点的指针成员值
          }
          p-> next=NULL;//尾结点的指针成员值//
          p=head;//链表显示
          printf("链表数据成员是:");
          while(p->next!=NULL)
          {
          printf("%3d",p->data);
          p=p->next;
          }
          printf("%3d\n",p->data);
          return 0;
}


思考赐予新生,时间在于定义
2013-07-19 23:30
小小软件
Rank: 1
等 级:新手上路
帖 子:16
专家分:5
注 册:2013-7-19
收藏
得分:0 
回复 7楼 love云彩
struct student *create()-------这个函数在主函数不懂怎么用,而且系统说create本地定义非,能帮我写一下么,新手不会啊

我不是大神,我只是一个路人
2013-07-20 10:46
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
struct student *create()--返回的是结构体的指针,可以这样使用:
struct Student* pHead;//创建一个结构体指针变量
pHead=Create();//Create()返回一个指针的地址值给pHead
只能这么跟你解释了

思考赐予新生,时间在于定义
2013-07-20 12:12
q13678986740
Rank: 4
等 级:业余侠客
帖 子:114
专家分:245
注 册:2012-7-7
收藏
得分:10 
#include "stdlib.h"
#include<stdio.h>
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
    long num;
    float score;
    struct student *next;
};
int n;
void main()
{     
    struct student *p;
     struct student *create();
     p=create();
     while(p!=NULL)
     {
          printf("%d %f      ",p->num,p->score);
          p=p->next;
      }
}

struct student *create()         
{
    struct student *head,*p1,*p2;
    n=0;
    head=NULL;
    p1=p2=(struct student*)malloc(LEN);
    scanf("%d,%f",&p1->num,&p1->score);
    p1->next=NULL;
    while(p1->num!=0)                        
    {
        ++n;
        if (n==1)                           
            head=p1;
        else
            p2->next=p1;                     
        p2=p1;
        p1=(struct student *)malloc(LEN);  
        scanf("%d,%f",&p1->num,&p1->score);\*这里应该两个都是p1*\
        p1->next=NULL;
    }
    return(head);
}

手机编辑,未跑过,仅供参考。
2013-07-21 12:25
快速回复:新手第一贴,关于建立链表,代码敲出来,头文件不会弄,求大神指教
数据加载中...
 
   



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

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