方法一: 链表
解题思路: 链表的建立 + 两个链表的连接
注意事项:
参考代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 1000
struct link{
char c;
struct link *next;
};
typedef struct link link;
int main()
{
char s[N];
char s1[N];
link *head ,*p,*q;
head=NULL;
int n;
int sum=0;
char m,c;
scanf("%s",s);
getchar();
scanf("%s",s1);
scanf("%d",&n);
for(int i=0;s[i]!='\0';i++)//链表的建立
{
p = (link*)malloc(sizeof(link));
p->c = s[i];
p->next = NULL;
if(head==NULL)
{
head=p;
}
else
q->next = p;
q=p;
}
link *top = head;
while(top)//找到要连接的位置
{
sum++;
if(sum==n-1)
break;
top=top->next;
}
link *head1=NULL;
for(int i=0;s1[i]!='\0';i++)//对要插入的链表进行创建
{
p = (link*)malloc(sizeof(link));
p->c = s1[i];
p->next = NULL;
if(head1==NULL)
{
head1=p;
}
else
q->next = p;
q=p;
}
if(n==1)//很重要的一点,如果要连接的链表要放在开头,则要要把第一个建立的链表连接到第二个链表的尾部
{
p->next=head;
head=head1;
}
else
{
p->next = top->next;//链表的连接
top->next = head1;
}
while(head!=NULL)//打印链表
{
printf("%c",head->c);
head = head->next;
}
}
方法二:数组
参考的代码:
#include<stdio.h>
#include<string.h>
#define N 1000
int main()
{
char s[N],s1[N];
int num;
scanf("%s",s);
getchar();
scanf("%s",s1);
scanf("%d",&num);
for(int i=0;s[i]!='\0';i++)
{
if(i==num-1)//找到要插入的位置,将剩余数组向后移动strlen(第二个数组)
{
int len =strlen(s1);
for(int k=len+strlen(s)-1;k>=i;k--)
{
s[k+len]=s[k];
}
int j=0;
int m=i;
for(;m<len+i;m++)
{
s[m]=s1[j];
j++;
}
}
}
puts(s);
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复