痛苦面琦 2022-11-12 19:18 采纳率: 40%
浏览 15
已结题

要求合并输出新的非递增有序线性表,结果是输出自己输入的线性表,并不是合并非递增

#include<stdio.h>
#include<stdlib.h>
typedef struct list
{
char data;
struct list *next;
}LinkList;

LinkList *CreateLinklist_End(int l) //尾插法创建循环单链表
{
LinkList *head,p,e;
char ch;
l=0;
head=(LinkList
)malloc(sizeof(LinkList));
e=head;
ch=getchar();
while(ch!='#')
{
l=l+1;
p=(LinkList
)malloc(sizeof(LinkList));
p->data=ch;
e->next=p;
e=p;
ch=getchar();
}
e->next=head;
return head;
}

LinkList *LinkList_Connect(LinkList *h1,LinkList *h2) //单循环链表的合成
{
LinkList *p1,*p2;
p1=h1->next;
p2=h2->next;
while(p1->next!=h1) //找到链表一的尾结点
p1=p1->next;
while(p2->next!=h2)
p2=p2->next;
p1->next=p2->next->next; //链表1的尾结点指向2辅助头结点的下个结点
p2->next=h1; //链表的尾结点指向链表1的辅助头结点
free(h2); //释放链表的辅助头结点
return h1;
}

void ShowLinklist(LinkList *h) //输出显示链表
{
LinkList *p;
p=h->next;
while(p!=h)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}

int main()
{
LinkList *head1,*head2;
int length1,length2; //分别记录两个循环链表的长度
length1=0;
length2=0;
printf("创建两个单循环链表:\n");
printf("第一个链表数据输入(请依次输入字符数据,‘#’号结束):\n");
head1=CreateLinklist_End(length1);
getchar();
printf("第二个链表数据输入(请依次输入字符数据,‘#’号结束):\n");
head2=CreateLinklist_End(length2);
getchar();
printf("第一个链表的数据依次为:\n");
ShowLinklist(head1);
printf("第二个链表的数据依次为:\n");
ShowLinklist(head2);
printf("第一个和第二个链表的合并输出为:\n");
head1=LinkList_Connect(head1,head2);
ShowLinklist(head1);
return 1;
}

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-12 22:27
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月29日
  • 已采纳回答 11月29日
  • 创建了问题 11月12日

悬赏问题

  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)