201802227上午

1.字符串排序(指针实现)

  用二维数组来记下每一组的字符串

       用一个指针数组来指向每个字符串

          再从1~n用cmp实现字典序排序

   重点:cmp函数两个参数为指针,利用strcmp函数实现字典序比较排序,由于puts函数本身就是利用首地址进行输出所以只需要给它原指针即可

   老师代码如下(附注释):

      

 1 //本程序是将n个字符串按字典序从大到小排序 
 2 
 3 #include<bits/stdc++.h>
 4 #define For(i,l,r)     for(int i=(l);i<=(r);i++)
 5 using namespace std;
 6 char str[100][1000];
 7 char *ptr[100];
 8 //定义一个比较两个字符指针
 9 bool cmp(char str1[],char *str2){        //str1和str2 是两个指向char类型的指针变量
10     return strcmp(str1,str2)<0;    //相当于if (strcmp(a,b)<0) return true ;else return false;                
11     //strcmp函数是一个<cstring>里的字符串比较函数,当字典序下分别为a>b,a==b,a<b,返回值为正数、0、负数
12 }
13 int main(){
14     int n;
15     scanf("%d
",&n);    
16     //    %d
是强制换行,保证第一个字符串的输入从下一行开始。由于scanf需要对传入的n的值进行修改,所以传入n的地址 
17     For(i,1,n){        //宏定义取代了for(int i=1,i<=n;i++) 
18         gets(str[i]);
19         ptr[i]=str[i];//字符指针ptr[i] 存 str[i]字符串的首地址 
20     }
21     sort(ptr+1,ptr+1+n,cmp);    //对指针进行排序,两个指针的大小依据cmp返回的结果
22     For(i,1,n)
23         puts(ptr[i]);    //按序扫描一遍指针,输出指针指向的字符串 
24     return 0;
25 }
老师代码如下

2.约瑟夫问题(数组实现链表)

原文地址:https://www.cnblogs.com/friction/p/8477872.html