黑马程序员——ios学习笔记 C语言 结构体&链表&枚举

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


结构体
结构体是一种构造数据类型。
与其他高级语言中的“记录”类似。
定义:由相互关联的不同数据类型的数据组成的有机整体。
用途:为处理复杂的数据结构提供了手段。
                为函数间传递不同类型的参数提供了便利。
关键字:struct 

struct [结构体名]
{
  类型标识符  成员名1;
  类型标识符  成员名2;
   …………….
};
#include <stdio.h>
#include <string.h>
#define FORMAT "%d\n%s\n%f\n%f\n%f\n"
struct student                                              /*定义为外部结构体类型*/
{ int num; char name[20]; float score[3];};
void main()
{ void print(struct student);
   struct student stu;                                     /*定义为局部结构体类型变量*/
   stu.num=12345;
   strcpy(stu.name,"Li Li");
   stu.score[0]=67.5;stu.score[1]=89;stu.score[2]=78.6;
   print(stu);                                             /*结构体变量作实参*/
}
void  print(struct student stu) 
{ printf(FORMAT,stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2]); 
  printf(“\n”);}


链表

数组:静态分配存储单元,容易造成内存浪费。
链表:是重要的数据结构,它根据需要,动态分配内存单元 。

链表特征:头指针变量,存放链表首地址,链表中每个元素称结点,其内容: 
1、数据部分:可有若干项(整、实、字符、结构体类型等)
2、指针变量:下一结点的地址,最后一个结点(表尾)的地址部分为NULL。 

void main( ) 
{ struct  student  *head, *stu; 
   long  del_num;
   printf(“input  records: \n”); 
   head=creat();                                   /*建立链表,返回头指针*/
   print(head);                                   /*输出全部结点*/
   printf(“\n input  delete  number:”);  
   scanf(“%ld”, &del_num);                     /*输入要删除的学号*/
   while(del_num !=0) 
       { head=del(head,del_num);                  /*删除后链表的头地址*/  
          print(head);                            /*输出全部结点*/
          printf(“input  the  delete  number:”); 
          scanf(“%ld”, &del_num);               /*输入要删除的学号*/
       }
  printf(“\n  input  the  inserted  record:”); 
  stu=(struct  student *) malloc(LEN);
  scanf(“%ld,%f”, &stunum, &stuscore);    /*输入要插入的结点*/ 
  while(stunum !=0) 
     { head=insert(head,stu);                       /*插入新结点,返回地址*/   
        print(head);                               /*输出全部结点*/
        printf(“input  the  inserted  record:”); 
        stu=(struct  student *) malloc(LEN); 
        scanf(“%ld,%f”, &stunum, &stuscore);
      } 
}


枚举类型
        枚举类型是ANSI C新标准所增加的。如果一个变量只有几种可能的值,可以定义为枚举类型。所谓“枚举是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

        枚举类型及其变量的定义形式:
        enum  枚举类型名 {枚举元素列表} 枚举变量列表;

#include <stdio.h>        /*口袋中有红、黄、蓝、白、黑5种颜色的球若干个。每次从口袋中先后取出3个球,问得到3种不同色的球的可能取法,打印出每种排列的情况*/
void main( )
{enum color{red,yellow,blue,white,black};        <span style="font-family: Arial, Helvetica, sans-serif;"> /*创建color的枚举类型*/</span>
 enum color i,j,k,pri;                           <span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;"> /*定义四个枚举变量*/</span>
 int n,loop;
 n = 0;
 for(i=red;i<=black;i++)
  for(j=red;j<=black;j++)
   if(i != j)
    {for(k=red;k<=black;k++)
       if((i != j) && (k != j))
        {n=n+1;
          printf(“%-4d”,n);
          for(loop=1;loop<=3;loop++)
           {switch(loop)                          
              {case 1: pri=i;break;
                case 2: pri=j;break;
                case 3: pri=k;break;
                default: break;
              }
             switch(pri)                                <span style="font-family: Arial, Helvetica, sans-serif;">/*使用switch将各种情况打印出来*/</span>
   { case red:       printf(”%-10s”,”red”);break;
      case yellow: printf(”%-10s”,”yellow”); break;
      case blue:     printf(”%-10s”,”blue”); break; 
      case white:   printf(”%-10s”,”white”); break; 
      case black:   printf(”%-10s”,”black”); break;
      default:        break;
 } }
 printf(”\n”);
 } }
 printf(”\ntotal:%5d\n”,n);                            /*每5个结果换一次行*/
}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值