就简单的取值 插入 删除 合并
#include
#include
#include
typedef struct LNode
{
int num;
struct LNode *next;
}LNode,*LinkList;
void InitiList(LinkList L)
{
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
}
void LocateElem(LinkList L)
{
int e;
LNode *p;
p=L->next;
printf("\n\t\t输入要查找的数据:");
scanf("%d",&e);
while(p&&p->num!=e)
p=p->next;
p=p->next;
printf("%d",p->num);
}
void ListInsert(LinkList L)
{
int i;
int e;
LNode *p=L,*s;
int j=0;
printf("\n\t\t输入要插入的结点:");
scanf("%d",&i);
getchar();
printf("\n\t\t输入要插入的数据:");
scanf("%d",&e);
while(p&&(j<i-1))
{
p=p->next;
++j;
}
if(!p||j<i-1)
exit(0);
s=(LinkList)malloc(sizeof(LNode));
s->num=e;
s->next=p->next;
p->next=s;
}
void ListDelete(LinkList L)
{
int i;
LNode *p,*q;
int j=0;
printf("\n\t\t输入要删除的结点位置:");
scanf("%d",&i);
while((p->next)&&(j
{
p=p->next;
++j;
}
if(!(p->next)||j
exit(0);
q=p->next;
p->next=q->next;
free(q);
}
void shuru(LinkList L)
oid shuru(LinkList L)
{
LNode *p1,*p2;
int n;
scanf("%d",&n);
while(scanf("%d",&n)!=EOF);
{
p1=(LinkList)malloc(sizeof(LNode));
p1->num=n;
p1->next=NULL;
if(L->next==NULL)
L->next=p1;
else
p2->next=p1;
p2=p1;
scanf("%d",&n);
printf("AAAAAAA\n");
}
}
void hebing(LinkList L,LinkList T)
{
LinkList LC;
LNode *pa,*pb,*pc;
pa=L->next;
pb=T->next;
LC=L;
pc=LC;
while(pa&&pb)
{
if(pa->num<=pb->num)
{
pc->next=pa;
pc=pa;
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
free(T);
}
int main()
{
int n,t;
LinkList A;
LinkList B;
LinkList L;
LinkList T;
InitiList(A);
InitiList(B);
shuru(A);
shuru(B);
printf("\n\t\t选择需要操作的链表:1.A 其它.B");
scanf("%d",&t);
if(t=1)
{L=A;
T=B;}
else
L=B;
T=A;
printf("\n\t\t操作选择:");
printf("\n\t\t1:查找");
printf("\n\t\t2:插入");
printf("\n\t\t3:删除");
printf("\n\t\t4:合并");
printf("\n\t\t5:退出");
scanf("%d",&n);
for(;;)
{
switch(n)
{
case 1:LocateElem(L);
case 2:ListInsert(L);
case 3:ListDelete(L);
case 4:hebing(L,T);
case 5:exit(0);
}
}
free(A);
free(B);
return 0;
}