第2章 线性表的链式表示
综合应用题 第18题
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct lnode {
ElemType data;
int len;
struct lnode *next;
}LNode, *LinkList;
LinkList LinkListInit() {
LNode *L;
L = (LNode *)malloc(sizeof(LNode));
if (L == NULL) {
cout<<"申请内存空间失败\n";
exit(0);
}
L->next =L;
L->len=0;
return L;
}
LinkList LinkListCreatT(ElemType *a, int n) {
LNode *L;
L = LinkListInit();
LNode *r=L,*p;
for (int i = 0; i < n; i++){
p = (LNode *)malloc(sizeof(LNode));
if (p == NULL) {
cout<<"申请内存空间失败\n";
exit(0);
}
p->data = a[i];
p->next = r->next;
r->next = p;
r=p;
L->len++;
}
r->next=L;
return L;
}
void Connect(LinkList &L1,LinkList &L2)
{
LNode *p=L1,*q=L2;
while(p->next!=L1)
p=p->next;
while(q->next!=L2)
q=q->next;
p->next=L2->next;
q->next=L1;
}
int main() {
LinkList list1,list2,start;
int array1[5] = { 2, 4 , 3 , 4 , 2 };
int array2[5] = { 8, 7 , 6 , 5 , 4 };
cout<<"输出单链表的数据:"<<endl;
list1=LinkListCreatT(array1,5);
for (start = list1->next; start != list1; start = start->next) {
cout<<start->data<<" ";
}
cout<<endl;
list2=LinkListCreatT(array2,5);
for (start = list2->next; start != list2; start = start->next) {
cout<<start->data<<" ";
}
cout<<endl;
Connect(list1,list2);
for (start = list1->next; start != list1; start = start->next) {
cout<<start->data<<" ";
}
cout<<endl;
return 0;
}