严凯 发表于 2021-3-25 09:31:43

链表的插入

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
        char name;
        char number;
        int score;
        struct student *next;
}STU;
int lenth(STU *head)
{
        int k=0;
        STU *stu1;
        stu1=head;
        while(stu1!=NULL)
        {
                stu1=stu1->next;
                k++;
        }
        return k;
}
void insert(STU *head)
{
        STU *stu;
        stu=head;
        int i,j=0;
        j=lenth(head);
        printf("%d",j);
        printf("请问你要在哪里插入?");
        scanf("%d",&i);
       

}
void seek(STU *head)
{
        char number1;
        printf("请输入你要查找的学号:");
        scanf("%s",number1);
        STU *stu;;
        stu=head;
        while(stu!=NULL)
        {
                if(strcmp(stu->number,number1)!=0)
                {
                        stu=stu->next;
                }
                else
                {
                        printf("你要查找的人的姓名是%s\n",stu->name);
                        printf("这个人的学号是%s\n",stu->number);
                        printf("这个人的成绩是%d\n",stu->score);
                        break;
                }
        }
}
void getInput(STU *stu)
{
        printf("请输入姓名");
        scanf("%s",stu->name);
        printf("请输入学号");
        scanf("%s",stu->number);
        printf("请输入分数");
        scanf("%d",&stu->score);
}
void add(STU **head)
{
        STU *stu,*temp;
        stu=(STU *)(malloc(sizeof(STU)));
        if(stu==NULL)
        {
                printf("失败!");
                exit(1);
        }
        getInput(stu);
        if(*head!=NULL)
        {
                temp=*head;
                *head=stu;
                stu->next=temp;
        }
        else
        {
                *head=stu;
                stu=stu->next;
        }
}
int main()
{
        int i=0;
        STU *head;
        while(i<16)
        {
                printf("*");
                printf("-");
                i++;
        }
        printf("欢迎来到德莱联盟!\n");
        printf("我有以下操作!\n");
        printf("\t输入一个学生的信息(1)\t");
        printf("插入某一学生的信息(2)\n");
        printf("\t删除某一学生的信息(3)\t");
        printf("查找某个学生的信息(按学号)(4)\n");
        printf("\t打印(5)\t");
        printf("退出(6)\n");
        printf("OK!请开始你的表演(我就笑笑不说话了^-^)\n");
        while(i!=6)
        {
                printf("你要进行什么操作?");
                scanf("%d",&i);
        switch(i)
        {
        case 1:add(&head);break;
        case 2:insert(head);break;
        case 4:seek(head);break;
        }
        }
        return 0;
}


//我这个是一个还没完成的链表,我的功能2感觉有问题,就是插入功能,insert函数里面我调用了一个lenth函数求链表长度,但是我下面的printf("%d",j)和printf("你要在哪里插入")和scanf("%d",&i);都没有反应,怎么肥事?

画载舟中 发表于 2021-3-25 11:54:05

你插入操作都没有 怎么有结果??{:5_94:}

void insert(STU *head)
{
      STU *stu;
      stu=head;
      int i,j=0;
      j=lenth(head);
      printf("%d",j);
      printf("请问你要在哪里插入?");
      scanf("%d",&i);
       // 插入操作呢??

}

严凯 发表于 2021-3-25 19:02:44

不是,我的问题是,我这个printf("%d",j),以及后面的printf没有起作用啊
就是没有打印

yuxijian2020 发表于 2021-3-27 17:23:39

没反应就是没有执行,那没有执行上面肯定出了问题,你在你的length函数里下过断点没?
你从来都没有初始化过,length里的循环怎么可能能断的下来呢
页: [1]
查看完整版本: 链表的插入