该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include"stdio.h"
//使用new指针来将临时变量重新初始化
#include"stdio.h"
typedef int ElemType;
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void InitList(LinkList &L)//L是头指针,指针指向第一个节点,通过移动L的指向来加入元素
{
ElemType e;
LinkList p;
L=new LNode;
L->next = NULL;
printf("请输入链表中的数据元素,以0结束");
scanf("%d",&e);
while(e)
{
p=new LNode;
p->data=e;
p->next=L->next;
L->next=p;
scanf("%d",&e);
}
}
void PrintList(LinkList L)
{
LinkList p;
ElemType ddt;
p=L->next;
while(p){
ddt=p->data;
printf("%d\t",ddt);
p=p->next;
}
printf("\n");
}
void InsertList(LinkList &L)
{
LinkList p;
printf("\ninput the number at the tail of table which you wish to insert\n");
p=new LNode;
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
}
void Delete(LinkList &L)
{
LinkList p,temp;
ElemType e;
printf("\ninput the number you wish to delete\n");
scanf("%d",&e);
temp=L;
p=L->next;
while(p)
{
if(p->data==e)
{
printf("the opertation is successful\n");
temp->next=p->next;
break;
}
else
temp=p;
p=p->next;
}
}
LinkList Daozhi(LinkList &L)
{
LinkList p;
LinkList s,pp;//倒置即将表中元素输出后重新赋值,再创建另外一个链表,s为新链表的表头
LinkList temp;
p=L->next;//
s=new LNode;
s->next=NULL;
while(p)
{
pp=new LNode;
pp->data=p->data;
pp->next=s->next;
s->next=pp;
p=p->next;
}
return s;
/*
temp=new LNode;
temp=s->next;
while(temp)
{
printf("%d\t",temp->data);
temp=temp->next;
}
*/
}
LinkList Comb(LinkList &L1,LinkList &L2)
{
printf("asdp");
LinkList p1,p2,p3;//p1对应L1的暂存变量,p2对应L2的暂存变量
LinkList temp;//输出的临时变量
LinkList L3;
L3=new LNode;
L3->next=NULL;
p1=L1->next;
p2=L2->next;
while(p1&&p2)
{
if(p1->data<=(p2->data))
{
p3=p1;
p1=p1->next;
}
else{
p3=p2;
p2=p2->next;
}