# include<stdio.h>
# include <string.h>
# include <malloc.h>
typedef struct LNode{
int data;
struct LNode *next;
}*LinkList;
void InitList(LinkList &L) //生成空表
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}
void Insert(LinkList &p,LinkList &s) //插入结点s
{
s->next=p->next;
p->next=s;
}
LinkList MakeNode(LinkList &p,int e) //给结点赋值
{
p=(LinkList)malloc(sizeof(LNode));
if(!p)
return 0;
else
{ p->data=e;
}
return p;
}
int ListInsert(LinkList &L,int i,int e) // 在第i个位置之前插入结点
{
LinkList s, p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)
return 0;
MakeNode(s,e);
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete(LinkList L,int i) //删除第i个结点
{
LinkList q, p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)
return 0;
q=p->next;
p->next=q->next;
free(q);
}
void ShowList(LinkList L)
{
LinkList p=L;
while (p->next) //while(p) error
{
p=p->next;
printf("%d ",p->data);
}
printf("\n");
}
void Listsort(LinkList &L)
{
LinkList q,p=L->next;
int e;
while (p->next)
{
q=p->next;
while(q)
{
if (p->data>q->data)
{ e =p->data;
p->data=q->data;
q->data=e;
}
q=q->next;
}
p=p->next;
}
}
LinkList Union(LinkList &La,LinkList Lb) //有问题
{
LinkList q=La->next;
LinkList p=Lb->next;
while(q&&p)
{
if (p->data<q->data)
{
p->next=q->next;
q->next=p;
q=p;
p=p->next;
}
else if (p->data>=q->data)
{
p=p->next;
}
}
return La;
}
void main()
{
LinkList L,p,q,s,L1;
//p=L->next;
InitList(L);
InitList(L1);
int i,a;
printf("input the List L:\n");
for (i=1;i<7;i++)
{
scanf("%d",&a);
ListInsert(L,i,a);
}
printf("show the List L:\n");
ShowList(L);
Listsort(L);
printf("input the List L1:\n");
for (i=1;i<4;i++)
{
scanf("%d",&a);
ListInsert(L1,i,a);
}
printf("show the List L:\n");
ShowList(L);
Listsort(L1);
printf("show the List L1:\n");
ShowList(L1);
L=Union(L,L1);
printf("show the List L:\n");
ShowList(L);
/*ListDelete(L,4);
printf("show the List:\n");
ShowList(L);
printf("输入要插入的数和位置\n");
scanf("%d%d",&a,&i);
ListInsert(L,i,a);
printf("show the List:\n");
ShowList(L);
MakeNode(s, 27); //s=MakeNode(s, 27); also right
p=L->next;
while(p->next&&p->data<100) //while(p) error
p=p->next;
Insert(p,s);
printf("show the List:\n");
ShowList(L);*/
}
# include <string.h>
# include <malloc.h>
typedef struct LNode{
int data;
struct LNode *next;
}*LinkList;
void InitList(LinkList &L) //生成空表
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}
void Insert(LinkList &p,LinkList &s) //插入结点s
{
s->next=p->next;
p->next=s;
}
LinkList MakeNode(LinkList &p,int e) //给结点赋值
{
p=(LinkList)malloc(sizeof(LNode));
if(!p)
return 0;
else
{ p->data=e;
}
return p;
}
int ListInsert(LinkList &L,int i,int e) // 在第i个位置之前插入结点
{
LinkList s, p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)
return 0;
MakeNode(s,e);
s->next=p->next;
p->next=s;
return 1;
}
int ListDelete(LinkList L,int i) //删除第i个结点
{
LinkList q, p=L;
int j=0;
while(p&&j<i-1)
{
p=p->next;
j++;
}
if(!p||j>i-1)
return 0;
q=p->next;
p->next=q->next;
free(q);
}
void ShowList(LinkList L)
{
LinkList p=L;
while (p->next) //while(p) error
{
p=p->next;
printf("%d ",p->data);
}
printf("\n");
}
void Listsort(LinkList &L)
{
LinkList q,p=L->next;
int e;
while (p->next)
{
q=p->next;
while(q)
{
if (p->data>q->data)
{ e =p->data;
p->data=q->data;
q->data=e;
}
q=q->next;
}
p=p->next;
}
}
LinkList Union(LinkList &La,LinkList Lb) //有问题
{
LinkList q=La->next;
LinkList p=Lb->next;
while(q&&p)
{
if (p->data<q->data)
{
p->next=q->next;
q->next=p;
q=p;
p=p->next;
}
else if (p->data>=q->data)
{
p=p->next;
}
}
return La;
}
void main()
{
LinkList L,p,q,s,L1;
//p=L->next;
InitList(L);
InitList(L1);
int i,a;
printf("input the List L:\n");
for (i=1;i<7;i++)
{
scanf("%d",&a);
ListInsert(L,i,a);
}
printf("show the List L:\n");
ShowList(L);
Listsort(L);
printf("input the List L1:\n");
for (i=1;i<4;i++)
{
scanf("%d",&a);
ListInsert(L1,i,a);
}
printf("show the List L:\n");
ShowList(L);
Listsort(L1);
printf("show the List L1:\n");
ShowList(L1);
L=Union(L,L1);
printf("show the List L:\n");
ShowList(L);
/*ListDelete(L,4);
printf("show the List:\n");
ShowList(L);
printf("输入要插入的数和位置\n");
scanf("%d%d",&a,&i);
ListInsert(L,i,a);
printf("show the List:\n");
ShowList(L);
MakeNode(s, 27); //s=MakeNode(s, 27); also right
p=L->next;
while(p->next&&p->data<100) //while(p) error
p=p->next;
Insert(p,s);
printf("show the List:\n");
ShowList(L);*/
}