鱼C论坛

 找回密码
 立即注册
查看: 2792|回复: 2

刚学数据结构,做作业编辑正确调适错误,2小时没发现错在哪里,求改错。

[复制链接]
发表于 2013-6-13 19:28:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
只有根据学号排序那个地方进行不下去,已经附加红字
#include<stdio.h>
#include<malloc.h> //程序中用到了malloc()函数
#include<string.h> //程序中用到了strcpy()函数
#include<stdlib.h> //程序中用到了exit()、system()函数
#include<conio.h>     //程序中用到了getch()函数

typedef struct Lnode{
char number[10]; //定义学号
char name[9];  //定义姓名
char sex[3];  //定义性别
int age;   //定义年龄
int score;   //定义成绩
struct Lnode *next;
}Lnode;

void menu()
{
printf("\n\n\t**********************学生信息管理系统*******************\n");
printf("\n\t\t\t1.创建学生信息表\n");
printf("\n\t\t\t2.按学号排序\n");
printf("\n\t\t\t3.插入新同学\n");
printf("\n\t\t\t4.删除退学同学\n");
printf("\n\t\t\t5.打印学生信息表\n");
  printf("\n\t\t\t6.退出系统\n");
printf("\n\t************学号:G12060101**********姓名:张三************\n"); //这里改成您的学号、姓名
printf("\n\t请输入您的选择:");
}
int  biaochang(Lnode *L)
{
int i=0;
Lnode *p;
p=L;
do
{
  p=p->next;
  i++;
}while(p->next!=NULL);
return i;
}

Lnode*  chuangjian(Lnode *L,int n)  //采用尾插法创建单链表
{
  Lnode *s,*r;
  int i;
  char no[10],xingming[9],xingbie[3];
  int nianling,chengji;
  L=(Lnode *)malloc(sizeof(Lnode));
  L->next=NULL;
  r=L;
  printf("\n请输入学生的各项信息(学号 姓名 性别 年龄 成绩):\n");
  for(i=1;i<=n;i++)
  {
   s=(Lnode *)malloc(sizeof(Lnode));
   scanf("%s %s %s %d %d",no,xingming,xingbie,&nianling,&chengji);
   strcpy(s->number,no);
   strcpy(s->name,xingming);
   strcpy(s->sex,xingbie);
   s->age=nianling;
   s->score=chengji;
   s->next=r->next;
   r->next=s;
   r=s;
  }
return  L;
}
Lnode*  paixu(Lnode *L) //根据学号排序
{
  int i=1,d,e,f;
  Lnode *a,*b,*c;
  f=biaochang(L);
  for(e=1;e<f;e++)
  {
   a=L;
   b=L->next;
   c=b->next;
    for(;;)
    {
     if(c->next==NULL||b->next==NULL) break;
     if(b->number>c->number&&i==1)
     {
      a->next=c;
      b->next=c->next;
      c->next=b;
      i=0;
     }
     else if(c->number>b->number&&i==0)
     {
      a->next=b;
      c->next=b->next;
      b->next=c;
      i=1;
     }
     a=a->next;
     b=b->next;
     c=c->next;
    }
  }
  return L;
}
Lnode* insert(Lnode *L,int i,char no[10],char xingming[9],char xingbie[3],int nianling,int chengji)
  //在单链表的第i个位置插入新学生信息
{
  Lnode *a,*b;
  int q;
  a=(Lnode *)malloc(sizeof(Lnode));
  strcpy(a->number,no);
  strcpy(a->name,xingming);
  strcpy(a->sex,xingbie);
  a->age=nianling;
  a->score=chengji;
  b=L;
  for(q=1;q<i;q++)
   b=b->next;
  a->next=b->next;
  b->next=a;
  return L;
}
Lnode* shanchu(Lnode *L,int i)    //删除单链表中第i个位置上的学生信息
{
  int c;
  Lnode *s,*r;
  r=L;
  s=L->next;
  for(c=1;c<i;c++)
  {
   r=r->next;
   s=s->next;
  }
  r->next=s->next;
  free(s);
  return L;
}
void dayin(Lnode *L)  //打印单链表
{
  Lnode *p;
  printf("\n学号\t\t姓名\t性别\t年龄\t成绩\n");
  printf("-------------------------------------------------\n");
  p=L->next;
  while(p!=NULL)
  {
   printf("%s\t%s\t%s\t%d\t%d\n",p->number,p->name,p->sex,p->age,p->score);
   p=p->next;
  }
}

void tuichu()
{
  printf("下次再见,88!");
exit(0);
}
main()
{
Lnode *L=NULL,*t;
int xuanze;
int count;
int pos2;
char xh[10],nm[9],xb[3];
int ag,cj;
int pos3;
while(1)
{
  menu();
  scanf("%d",&xuanze);

  switch(xuanze)
  {
   case 1:
   {
    printf("\n请问您要输入的学生人数:");
    scanf("%d",&count);
    t=chuangjian(L,count);
    dayin(t);
    break;
   }
   case 2: paixu(L); break;
   case 3:
   {
    printf("请输入要插入的位置(1-%d): ",count);
    scanf("%d",&pos2);
    printf("请输入新学生信息(信息用空格分开): \n");
    scanf("%s %s %s %d %d",xh,nm,xb,&ag,&cj);
    t=insert(t,pos2,xh,nm,xb,ag,cj);
    count++;
    printf("插入后的单链表为:\n");
       dayin(t);
    break;
   }
   case 4:
   {
    printf("请输入要删除的位置(1-%d): ",count);
    scanf("%d",&pos3);
    t=shanchu(t,pos3);
    count--;
    printf("删除后的单链表为:\n");
       dayin(t);
    break;
   }
   case 5: dayin(t); break;
   case 6: tuichu(); break;
  }
  
  printf("\n");
  printf("输入任意键继续......\n");
  getch();
  system("cls");   //清屏
  printf("单链表中的元素分别为:\n");
     dayin(t);
  printf("\n\n");
}
}

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-13 20:28:51 | 显示全部楼层
刚发完帖子回头看时结果发现错误,纠结了,指针错了桑不起啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-6-14 12:56:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-23 22:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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