小弟有一个问题,关于单链表的
题目:函数DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)的功能是:将线性表A中关键码为key1的结点开始的len个结点,按原顺序移至线性表B中关键码为key2的结点之前,若移动成功,则返回0,否则返回-1,线性表的存储结构为带头结点的单链表,La为表A的头指针,Lb为表B的头指针。main函数就是写不下去,求帮助。不是作业,只是私人兴趣。
#include "stdio.h"
#include "stdlib.h"
typedef struct node {
int key;
struct node *next;
}Node,*LinkedList;
int DelA_InsB(LinkedList La,LinkedList Lb,int key1,int key2,int len)
{
LinkedList p,q,s,prep,pres;
int k;
if(!La->next||!Lb->next||len<=0)
return -1;
p=La->next;
prep=La;
while(p&&p->key!=key1)
{
prep=p;p=p->next;
}
if(!p)
return -1;
q=p;k=1;
while(q&&k<len)
{
q=q->next;k++;
}
if(!p)
return -1;
s=Lb->next;
pres=Lb;
while(s&&s->key!=key2)
{
pres=s;
s=s->next;
}
if(!s)
return -1;
pres->next=q->next;
q->next=s;
pres->next=p;
return 0;
}
int main(void)
{
int i,k;
LinkedList head,p,q;
head=(Node *)malloc(sizeof(Node)); /*创建头结点*/
head->next=NULL;
p=head;
printf("请输入节点数据:");
scanf("%d",&k);
while(k!=-1) /*依此建立结点,并插入链表中,遇到-1结束*/
{
q=(Node *)malloc(sizeof(Node));
q->key=k; /*每个结点的编号*/
q->next=p->next; /*将结点插入链表*/
p->next=q;
p=q;
scanf("%d",&k);
}
for(p=head->next;p!=NULL;p=p->next) /*将建立的链表节点打印一遍*/
printf("%d\n ",p->key);
fflush(stdin);
getchar();
return 0;
}