C语言Test
#include <stdio.h>#include <malloc.h>
FILE *fin, *fout; // 创建文件指针
/*
循环1
1. 输入两个数字(插入几个以及本来链表的长度)
2. 输入 N 个指令(value, index)
循环2
1. 输入Len 个元素
把原来的指令插入循环2
(1)找到index插入
第一个条件也许已经需要一个N空间了
当同种数字数量大于等于3 并且连在一起的话
(1)以当前的p 为末尾指针,先前的2 位给去掉
2中计划 num 1~2
1 2 3 3 3 2 2
num 只记住连续的,即上一个是否是这个(p指向的)一样
这次的目标是3,因为 3=3 (2) =3(3)
打印链表
*/
struct node
{
int num;
struct node *next, *pre;
};// 创建结构体
struct node *head, *p, *q; // head用来标记,q用来新建空间,p用来连接
int N, Len; // 分别是插入的命令的个数和本来链表的长度
void print()
{
p = head;
while(p != NULL)
{
printf("%d ", p -> num);
p = p -> next;
}
printf("\n");
}
int main()
{
fin = fopen("ok.in", "r");
fout = fopen("ok.out", "w");
fscanf(fin, "%d %d", &N, &Len); // 输入1 开始
const int n = N; int map; // 创建临时变量
int i, j;
for(i = 1;i <= N;i++)
{
fscanf(fin, "%d %d\n", &map, &map);
}
// 循环 2开始
int x; //作为中间变量
head = malloc(sizeof(struct node)); //创建头
fscanf(fin, "%d", &x); head -> num = x; // 首次尝试
head -> pre = NULL; // head的特性
p = head; // 临时变量
for(i = 2;i <= Len;i++)
{
q = malloc(sizeof(struct node));
p -> next = q;
q -> pre = p; // 建立连接
fscanf(fin, "%d", &x); q -> num = x; // 输入x
p = q; //替换(前进一步)
}
p -> next = NULL; // 结尾的特征
// 把原来的指令插入链表
for(i = 1;i <= N;i++)
{
p = head; // 回位
for(j = 1;j <= map-1;j++) // 查找到那个位置
{
if(p -> next != NULL)p = p -> next; //前进
else break;
}
q = malloc(sizeof(struct node));
if(p -> next != NULL) {q -> next = p -> next;}
else
{
q -> next = NULL; // 默认排到最后
}
p -> next = q;
q -> pre = p;
q -> num = map; // 插入
}
// 最重要的一部分(分开中)
p = head;
int best_num = 1;
int pre_num = p -> num;
for(i = 1;;i++)
{
if(p -> next == NULL) break;
p = p->next;
if(pre_num == p->num)
{
best_num += 1;
}else{best_num = 1;}
if(best_num >= 3)
{
// 这时就是这样的 1 2 3 3 3 2(p) 2
p -> pre -> pre -> pre -> next = p;
}
pre_num = p -> num;
}
if(pre_num == p->num)
{
best_num += 1;
}else{best_num = 1;}
if(best_num >= 3)
{
// 这时就是这样的 1 2 3 3 3 2(p) 2
p -> pre -> pre -> pre -> next = p;
}
print();
fclose(fin);
fclose(fout);
return 0;
}
本帖最后由 jackz007 于 2020-5-10 23:35 编辑
必须把代码贴入代码框,否则,代码中的部分内容,比如方括号中的 i 会被作为页面语言中的斜体指令而非文本内容来对待,这就意味着,从此以后,你的代码就会统统变成斜体字,相应地,代码中用于代表数组的方括号 i 也统统失踪了。看看你贴出的代码是不是这样?
关键是,别人复制到你贴出的代码文本已经不是你所希望的样子了,而是已经丢失了很多内容的版本,所以,只要贴出的代码中有斜体字,别人一般都不太愿意帮你。 jackz007 发表于 2020-5-10 23:23
必须把代码贴入代码框,否则,代码中的部分内容,比如方括号中的 i 会被作为页面语言中的斜体指令而 ...
说的没毛病{:10_298:}
页:
[1]