一.学习成果(概览)
这周学习了链表的基础,复习了插入排序,桶排序,选择排序,冒泡排序,学习了新的排序:选择排序,
复习了指针和数组,了解了字符串指针。
二.学习过程和细节
1.选择排序
选择排序是我接触的最难实现的排序,因为他还涉及到了递归的应用,但是很快,也蛮好理解的,就是代码实现上还挺困难的`
#include <stdio.h>
int a[100],n;
void quick(int left,int right)
{
int i,j,t,temp;
if(left>right)
return;
temp=a[left];//temp中存的就是基准数
i=left;
j=right;
while(i!=j)
{
while(a[j]>=temp&&i<j)
{
j–;
}
while(a[i]<=temp&&i<j)
{
i++;
}
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=temp;
quick(left,i-1);
quick(i+1,right);
}
main()
{
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
quick(1,n);
for(i=1;i<=n;i++)
{
printf("%d\t",a[i]);
}
return 0;
}`
2.复习之前学过的排序
代码在这就不打出来了,主要是可以优化什么的,可以自己再想想
3.了解字符串指针
通过字符串指针来输出字符串。
指针标量每增减1,地址在字节的增减量d等于基类型字节数sizeof(type);
4.复习指针和数组
复习了通过指针访问数组元素
5.函数的传参相关方面的新知识
C语言在调用函数时,永远只能传值给函数
理解变量的生存期和作用域
调用函数时的圆括号里的逗号是标点符号,不是运算符:例:f(a,b)与f((a,
b))不同,后者传出一个参数,要先运算。
函数参数表中的数组实际上是指针
6.全局变量和本地变量
全局变量不推荐用,但是用的时候一定要小心,
7.链表的基础(自己简单实现)
代码:
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
int main()
{
struct node *head,*p,*q,*t;
int i,n,a;
scanf("%d",&n);
head=NULL;
for(i=1;i<=n;i++)
{
scanf("%d",&a);
p=(struct node *)malloc(sizeof(struct node));
p->next=NULL;
if(head==NULL)
{
head=p;
}
else
{
q->next=p;
}
q=p;
}
}
链表方面的知识还得学习,掌握的不是很好
三.自己的学习感受
感觉许多问题,都是在实践的时候发现的,所以觉得通过做题来发现自己的错误挺高效的