如何连接两个链表

来源:百度知道 编辑:UC知道 时间:2024/05/17 05:48:27
我新建了两个链表,需要把两个链表合并,即一个链表的尾部连接另一个链表的头结点(两个链表是不同类型的),怎么实现?我直接p->next=head0了。出现错误。提示不能转换 。
问题简单描述:系统的数据结构:①系统中用一个航次表(顺序表)反映各航次的余票情况;用乘客表(双向链表),按乘客姓氏字母词典顺序连接相同航次各乘客信息项。②结点结构:航次表结点结构如下: data1 data2 rlink 。其中data1航次,data2余票,rlink指向乘客表。乘客表结点结构如下: link data1 data2 rlink 。其中data1:乘客姓名,data2:票数,llink:指向其前一个乘客,rlink:指向其后一个乘客。

首先回答你的问题,你这两个表在一般情况下是无法连接的。因为数据类型不同,在这里你需要用一个航次表节点指针指向一个乘客表节点(或者反过来),系统未提供这样的类型转换,所以在编译时报错。如果非要转换,最简单就是修改数据结构相同。
struct Node
{
data1;
data2;
rlink;
flink;
}航次表,乘客表; //使用类似办法可以实现你的目的,而且其他代码不需要修改。

不过我建议在程序中不要做类似的连接。你所定义的两个表,完全基于不同的概念,你需要连接它们只是因为数据结构类似,想提供给自己某种便捷。而这样的便捷往往会给以后的开发,修改,维护带来更大的麻烦。望考虑。

2009-03-16
我在考虑能够直接在航次表里声明一个乘客表类型的指针~
正在尝试当中。
你觉得呢

完全可以,而且符合逻辑。

PS:公司网络无法使用HI回复

以前学数据结构做过一个“非递减的链表合并一一个非递增的链表”
程序如下:
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}LinkList;

/* 建立链表 */

LinkList *create_link(int m)
{
LinkList *head,*s,*p;
int i;
head=(LinkList *)malloc(sizeof(LinkList));
head->next=NULL;
p=head;
for(i=0;i<m;i++){
s=(LinkList *)malloc(sizeof(LinkList));
if(s==NULL){