c语言建立长度为n的单链表A和长度为m的单链表B,n>0,m>0。编程实现将B表链接在A表的尾端,形成一个单链表A。数据类型指定为字符型。 输入格式: 第一行为A表的长度n; 第二行为A表中的数据元素; 第三行为B表的长度m; 第四行为B表中的数据元素。 输出格式: 输出为链接好后的A表中的所有数据元素。
时间: 2024-01-22 13:21:14 浏览: 86
以下是使用C语言实现将B表链接在A表尾端的代码:
```c
#include <stdio.h>
#include <stdlib.h>
//定义节点结构体
typedef struct node{
char data; //数据元素类型为字符型
struct node *next; //指向下一个节点的指针
}Node;
//创建链表函数
Node *createList(int n){
Node *head, *p, *q;
head = (Node *)malloc(sizeof(Node)); //创建头结点
q = head; //q指向头结点
for(int i=0; i<n; i++){
p = (Node *)malloc(sizeof(Node)); //创建新节点
scanf(" %c", &p->data); //输入节点数据
q->next = p; //将新节点连接到链表尾部
q = p; //q指向新节点,继续循环
}
q->next = NULL; //链表尾部置空
return head; //返回头结点
}
//输出链表函数
void printList(Node *head){
Node *p = head->next; //p指向第一个节点
while(p){
printf("%c ", p->data); //输出节点数据
p = p->next; //指向下一个节点
}
printf("\n");
}
//链接两个链表函数
void linkList(Node *A, Node *B){
Node *p = A;
while(p->next){ //找到A链表尾部
p = p->next;
}
p->next = B->next; //将B链表连接到A链表尾部
free(B); //释放B链表的头结点
}
int main()
{
int n, m;
printf("Please enter the length of A list: ");
scanf("%d", &n);
printf("Please enter %d elements for A list: ", n);
Node *A = createList(n); //创建A链表
printf("Please enter the length of B list: ");
scanf("%d", &m);
printf("Please enter %d elements for B list: ", m);
Node *B = createList(m); //创建B链表
linkList(A, B); //链接A和B链表
printf("Linked list: ");
printList(A); //输出链接好后的A链表
return 0;
}
```
样例输入:
```
Please enter the length of A list: 4
Please enter 4 elements for A list: a b c d
Please enter the length of B list: 3
Please enter 3 elements for B list: e f g
```
样例输出:
```
Linked list: a b c d e f g
```
阅读全文