鱼C论坛

 找回密码
 立即注册
查看: 5207|回复: 16

这段C代码神马意思

[复制链接]
发表于 2011-6-15 14:21:25 | 显示全部楼层 |阅读模式

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

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

x
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #define ERROR 0
  4. #define OK 1
  5. struct STU
  6. {
  7.        char name[20];
  8.        char stuno[10];
  9.        int age;
  10.        int score;
  11. }stu[50];
  12. struct LIST
  13. {
  14.        struct STU stu[50];
  15.        int length;
  16. }L;

  17. int printlist(struct LIST L)
  18. {
  19.     int i;
  20.     printf("name stuno age score\n");
  21.     for(i=0;i<L.length;i++)
  22.     printf("%s %s\t%d\t%d\n",L.stu[i].name,L.stu[i].stuno,L.stu[i].age,L.stu[i].score);
  23.     printf("\n");
  24. }

  25. int listinsert(struct LIST *L,int i,struct STU e)
  26. {
  27.     struct STU *p,*q;
  28.     if(i<1||i>L->length+1)
  29.     return ERROR;
  30.     q=&(L->stu[i-1]);
  31.     for(p=&L->stu[L->length-1];p>=q;--p)
  32.     *(p+1)=*p;
  33.     *q=e;
  34.     ++L->length;
  35.     return OK;
  36. } /*ListInsert Before i*/

  37. main()
  38. {
  39.       struct STU e;
  40.       L.length=0;
  41.       strcpy(e.name,"zmofun");
  42.       strcpy(e.stuno,"100001");
  43.       e.age=80;
  44.       e.score=1000;
  45.       listinsert(&L,1,e);
  46.       printlist(L);
  47.       printf("List length now is %d.\n\n",L.length);
  48.       
  49.       strcpy(e.name,"bobjin");
  50.       strcpy(e.stuno,"100002");
  51.       e.age=80;
  52.       e.score=1000;
  53.       listinsert(&L,1,e);
  54.       printlist(L);
  55.       printf("List length now is %d.\n\n",L.length);
  56.       getch();
  57. }
复制代码


正在看数据结构,这才第一张就看不懂。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-15 19:55:18 | 显示全部楼层
顶起来。。看看谁解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-18 10:52:31 | 显示全部楼层

  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. #define ERROR 0

  4. #define OK 1

  5. /*************************************/
  6. /*********定义学生信息的结构******/
  7. /*************************************/
  8. struct STU
  9. {

  10.        char name[20];      //姓名
  11.        char stuno[10];     //学号
  12.        int age;            //年龄
  13.        int score;          //分数
  14. }stu[50];


  15. /*************************************/
  16. /*******定义顺序存储的线性表******/
  17. /*************************************/
  18. struct LIST
  19. {
  20.        struct STU stu[50];    //学生信息
  21.        int length;            //学生的个数
  22. }L;


  23. /*************************************/
  24. /*********输出所有学生的信息*******/
  25. /*************************************/
  26. int printlist(struct LIST L)
  27. {
  28.     int i;
  29.     printf("name stuno age score\n");

  30.     for(i=0;i<L.length;i++)
  31.          printf("%s %s\t%d\t%d\n",L.stu[i].name,L.stu[i].stuno,L.stu[i].age,L.stu[i].score);

  32.     printf("\n");
  33. }


  34. /*********************************************/
  35. /*在线性表第i个位置上插入一个学生信息e*/
  36. /********************************************/
  37. int listinsert(struct LIST *L,int i,struct STU e)
  38. {
  39.     struct STU *p,*q;       //定义两个指向STU结构的指针变量

  40.     if(i<1||i>L->length+1)  //非法情况的处理
  41.           return ERROR;

  42.     q=&(L->stu[i-1]);    //将线性表中第i位置上的地址赋给指针变量q
  43.    

  44.    /*将线性表中第i位置之后的所有学生向后移动一位*/
  45.     for(p=&L->stu[L->length-1];p>=q;--p)
  46.          *(p+1)=*p;

  47.     *q=e;
  48.     ++L->length;
  49.     return OK;
  50. } /*ListInsert Before i*/



  51. main()
  52. {
  53.       struct STU e;  //定义一个学生信息e
  54.       L.length=0;    //初始化线性表

  55.      /****************/
  56.      /*给学生e赋值*/
  57.      /***************/
  58.       strcpy(e.name,"zmofun");
  59.       strcpy(e.stuno,"100001");
  60.       e.age=80;
  61.       e.score=1000;

  62.       listinsert(&L,1,e);  //将学生e插入到线性表的第1个位置

  63.       printlist(L);  //输出线性表中的内容

  64.       printf("List length now is %d.\n\n",L.length);  //线性表的长度

  65.           
  66.      /****************/
  67.      /*给学生e赋值*/
  68.      /***************/
  69.       strcpy(e.name,"bobjin");
  70.       strcpy(e.stuno,"100002");
  71.       e.age=80;
  72.       e.score=1000;

  73.       listinsert(&L,1,e);  //将学生e插入到线性表的第1个位置

  74.       printlist(L);   //输出线性表中的内容

  75.       printf("List length now is %d.\n\n",L.length);  //线性表的长度

  76.       getch();
  77. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-20 22:57:43 | 显示全部楼层
本帖最后由 LNH_Sniper 于 2011-6-20 22:58 编辑

是一个顺序表结构的简单应用,包括了添加、插入、求表长等基本操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-17 00:42:41 | 显示全部楼层
数据结构里面最简单的一种,学C语言的时候最难的一个程序,线性表的操作
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-30 20:17:21 | 显示全部楼层

NO!NO!线性表相对于链表来说!那是2个档次的!本人才自学到(栈和队列)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-9-10 15:20:07 | 显示全部楼层
进来看看是什么!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-10-28 12:35:39 | 显示全部楼层
数据结构难学吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-11-27 16:28:04 | 显示全部楼层
太简单了吧...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2014-2-3 03:06:13 | 显示全部楼层
路过学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-8 03:07:11 From FishC Mobile | 显示全部楼层
看不见代码啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-15 19:54:17 | 显示全部楼层
我顶!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-7 00:08:59 | 显示全部楼层
:loveliness::loveliness:虽然我很菜不过还是看懂了,起码英语不难。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-8 00:30:56 | 显示全部楼层
路过 赞一个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-23 12:20:24 | 显示全部楼层
我也想知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-25 17:59:08 | 显示全部楼层
看了这么长的代码,感觉做程序员太难了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-21 21:27:39 | 显示全部楼层
好长啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 01:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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