学习时间与内容:
- 19:00-23:00刷题,链表和栈的初步了解
- 总学习4个小时,刷题3题
- 学习总结:
- 1选择排序的使用.
代码:#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
using namespace std;
int main() {
int n;
scanf("%d", &n);
int a[3 * n + 2] = {0};
int b[n + 2] = {0};
int c[n + 2] {0};
int sum[n + 2] = {0};
for (int i = 1; i <= 3 * n; i++) {
scanf("%d", &a[i]);
}
for (int i = 1; i <= 3 * n; i += 3) {
sum[(i - 1) / 3 + 1] = a[i] + a[i + 1] + a[i + 2];
}
for (int i = 1; i <= n; i++) {
c[i] = i;
b[i] = a[3 * i - 2];
}
for (int i = 1; i <= n; i++) {
int max = sum[i];
int t = i;
for (int j = i; j <= n; j++) {
if (max < sum[j]) {
max = sum[j];
t = j;
}
}
if (t != i) {
int u = sum[t];
sum[t] = sum[i];
sum[i] = u;
int y = b[t];
b[t] = b[i];
b[i] = y;
int r = c[t];
c[t] = c[i];
c[i] = r;
}
}
for (int i = 1; i <= n; ) {
int p = 0;
for (int j = i; j <= n; j++) {
if (sum[i] == sum[j]) {
p++;
}
}
for (int k = i; k <= i + p - 1; k++) {
int max = b[i];
int t = k;
for (int l = k; l <= i + p - 1; l++) {
if (max < b[l]) {
max = b[l];
t = l;
}
}
if (t != k) {
int u = sum[t];
sum[t] = sum[i];
sum[i] = u;
int y = b[t];
b[t] = b[i];
b[i] = y;
int r = c[t];
c[t] = c[i];
c[i] = r;
}
}
i+=p;
}
for(int i=1;i<=5;i++)
{
printf("%d %d\n",c[i],sum[i]);
}
return 0;
}
2指针,学长讲的没听太懂,自己跑去看视频了
#include <stdio.h>
void f(int *p);
void g(int k);
int main()
{
int i=6;
printf("&i=%p\n",&i);
f(&i);
g(i);
return 0;
}
void f(int *p)
{
printf("p=%p\n",p);
printf("*p=%d\n",*p);
}
void g(int k)
{
printf("k=%d\n",k);
}
定义整数变量i为6,*P指向i;得到i的地址为000000830edff72c
*p=6 即*p指向i,*p可以看做i.
这时如果赋值*p=26,则i的值也变为26。
3链表
没听懂=-=,是指针基础上的知识,是大量指针的集合,在存储时不连续,有效利用碎片空间。