鱼C论坛

 找回密码
 立即注册
查看: 3873|回复: 8

incompatible types - from 'struct stuednt *' to 'struct student *'

[复制链接]
发表于 2014-2-12 16:42:10 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 Ъγ:_小ツ雨oο 于 2014-2-12 16:43 编辑
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

#define LEN sizeof(struct stuednt)
int n;   //全局变量

struct stuednt
{
        int num;
        float score;
        struct stuednt *next;
};
struct stuednt *creat();     //创建链表
struct stuednt *del(struct stuednt *head, int num); // 传递的是 头和要删除的数
void print(struct stuednt *head);  //打印出来

void main()
{
        struct student *stu, *p;
        int n;

        stu = creat();
        p = stu;
        print(p);
        printf("Please enter the delete num : ");
        scanf("%d", &n);
        print(del(p, n));

        printf("\n\n");
        system("pause");
}

struct stuednt creat()
{
        struct stuednt *head, *p1, *p2;

        p1 = p2 = (struct stuednt *)malloc(LEN);

        printf("Please enter the num : ");
        scanf("%d", &p1->num);
        printf("Please enter the score : ");
        scanf("%f", &p1->score);

        head = NULL;
        n = 0;

        while(p1->num)
        {
                n++;
                if(n == 1)
                {
                        head = p1;
                }
                else
                {
                        p2->next = p1;
                }

                p2 = p1;
                p1 = (struct stuednt *)malloc(LEN);

                printf("Please enter the num :");
            scanf("%d", &p1->num);
            printf("Please enter the score :");
            scanf("%f", &p1->score);
        }

        p2->next = NULL;
        return head;
}

void print(struct stuednt *head)
{
        struct student *p;

        p = head;

        if(head)
        {
                do
                {
                        printf("%d号学生的成绩是: %5.1f\n", p->num, p->score);
                        p = p->next;
                }while(p);
        }
}

struct stuednt *del(struct stuednt *head, int num)
{
        struct stuednt *p1, *p2;

        if(head == NULL)
        {
                printf("在忽悠人!\n");
                goto end;
        }

        p1 = head;

        while(p1->num != num && p1->next != NULL)
        {
                p2 = p1;
                p1 = p1->next;
        }
        if(p1->num == num)
        {
                if(head == p1)
                {
                        head = p1->next;
                }
                else
                {
                        p2->next = p1->next;
                }
        printf("\nDelete No: %d succeed!\n",num);
                n = n-1;
        }
        else
        {
                printf("%d not been found!\n", num);
        }
end :
        return head;
}
求分析错误, 不晓得这个错误是什么意思,

最佳答案

查看完整内容

好吧,今天又巩固了一下结构体,以下程序编译成功
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-12 16:42:11 | 显示全部楼层
本帖最后由 oggplay 于 2014-2-21 00:02 编辑

好吧,今天又巩固了一下结构体,以下程序编译成功
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>

#define LEN sizeof(struct stuednt)
int n;   //全局变量

struct stuednt
{
        int num;
        float score;
        struct stuednt *next;
};
struct stuednt *creat();     //创建链表
struct stuednt *del(struct stuednt *head, int num); // 传递的是 头和要删除的数
struct stuednt *print(struct stuednt *head);  //打印出来

int main()
{
        struct student *stu, *p;
        int n;

      p=  creat();
       
        print(p);
        printf("Please enter the delete num : ");
        scanf("%d", &n);
        print(del(p, n));//打印删除后的所有学生成绩

       
        system("pause");
        return 1;
}

struct stuednt *creat()
{
        struct stuednt *head, *p1, *p2;

        p1 = p2 = (struct stuednt *)malloc(LEN);

        printf("Please enter the num : ");
        scanf("%d", &p1->num);
        printf("Please enter the score : ");
        scanf("%f", &p1->score);

        head = NULL;
        n = 0;

        while(p1->num)
        {
                n++;
                if(n == 1)
                {
                        head = p1;
                }
                else
                {
                        p2->next = p1;
                }

                p2 = p1;
                p1 = (struct stuednt *)malloc(LEN);

                printf("Please enter the num :");
            scanf("%d", &p1->num);
            printf("Please enter the score :");
            scanf("%f", &p1->score);
        }

        p2->next = NULL;
        return head;
}

struct stuednt *print(struct stuednt *p)
{
  struct stuednt *p1;
  p1=p;
  while(p)
    { printf("%d号学生的成绩是:%f\n\n",p->num,p->score);
     p = p->next;}
  p=p1;  return p;
}

struct stuednt  *del(struct stuednt *head, int num)
{
        struct stuednt *p1, *p2;

        if(head == NULL)
        {
                printf("在忽悠人!\n");
               return head;
        }

        p1 = head;

        while(p1->num != num && p1->next != NULL)
        {
                p2 = p1;
                p1 = p1->next;
        }
        if(p1->num == num)
        {
                if(head == p1)
                {
                        head = p1->next;
                }
                else
                {
                        p2->next = p1->next;
                }
        printf("\nDelete No: %d succeed!\n",num);
                n = n-1;
        }
        else
        {
                printf("%d not been found!\n", num);
        }

        return head;
}

2014-02-20 23:24:12 的屏幕截图.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-12 16:57:43 | 显示全部楼层
VC+ 6.0下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-12 19:14:50 | 显示全部楼层
看到你的代码目测一秒钟直接发现你有两个 n 变量一个是全局变量一个是局部变量.......
至于你说的目测是类型不符合 说白了你一个地方是student 一个地方是stuednt  其他的是否有错误不知道中......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-12 21:14:07 | 显示全部楼层

可是2个 n 是不一样的 啊, 一个是 传的值。   只是在小范围里面的 ,可能是错误的 把-- 我去调试调试去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-12 21:40:47 | 显示全部楼层
Ъγ:_小ツ雨oο 发表于 2014-2-12 21:14
可是2个 n 是不一样的 啊, 一个是 传的值。   只是在小范围里面的 ,可能是错误的 把-- 我去调试调试去

如果这么写 全局变量会被局部变量覆盖掉的!这是语法规定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 11:15:13 | 显示全部楼层
一点注释也没有,程序又这么长  都没兴趣看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-21 11:15:42 | 显示全部楼层
路过看看= =!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-2-27 17:08:52 | 显示全部楼层
有点长了,代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 19:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表