//链串中串插入运算
#include <stdio.h>
#include <stdlib.h>
typedef struct snode
{
char data;
struct snode *next;
}LiString; //链串节点类型
void StrAssingn(LiString **s, char str[]) //尾插法建立链串
{
LiString *p, *r;
int i;
*s = (LiString *)malloc(sizeof(LiString)); //建立链串头节点
r = *s; //r 始终指向链串s 的尾节点
for (i = 0; str[i] != '\0'; i++)
{
p = (LiString *)malloc(sizeof(LiString));
p->data = str[i];
r->next = p; //最后一个节点后加上p
r = p; //让p 指向最后一个节点
}
r->next = NULL;
}
void StrInsert(LiString *s, int i, LiString *t)
{ //将链串t 插入到链串s 的第i 个节点位置
LiString *p, *r;
int k;
p = s->next;
for (k = 0; k < i - 1; k++)
{
p = p->next;
}
r = p->next; //第i 个阶段开始的串
p->next = t->next;
p = t; //p 指向链串t 的头节点
while (p->next != NULL)
{
p = p->next;
}
p->next = r;
}
int main()
{
LiString *head1, *head2, *p;
char c1[20] = "ABCD", c2[10] = "abcd";
StrAssingn(&head1, c1); //建立链串head1
StrAssingn(&head2, c2); //建立链串head2
StrInsert(head1, 2, head2); //将链串head2插入到链串head1 中
p = head1->next;
while (p != NULL)
{
printf("%2c", p->data);
p = p->next;
}
printf("\n");
return 0;
}
串插入
最新推荐文章于 2024-04-14 20:10:55 发布