回复 2 楼 azzbcc
这是在vs2010 下的全部代码,我调晕了。 这是我们的一个测试题,fun中实现两个链表的连接,其他代码都是做好了的,只能修改 fun下面的代码。。。
#include "stdafx.h"
#include "malloc.h"
#include "string.h"
#include "stdlib.h"
#define DEBUG
#ifdef DEBUG
#define DEBUGOUT(n) printf_s(n)
#else
#define DEBUGOUT(n) ;
#endif
enum rType
{
FALSE = -1,
TRUE
};
typedef int datatype;
struct listNode
{
datatype ldata;
struct listNode *next;
};
typedef listNode *LinkList,node;
rType initList(LinkList *head)
{
*head = (node *)malloc(sizeof(node));
if(head == NULL)
{
printf_s("申请内存空间失败\n");
return FALSE;
}
(*head)->next = NULL;
//将next设置为NULL,初始长度为0的单链表
return TRUE;
}
rType insNode(LinkList head,datatype dat,int pos)
{
LinkList p=head,q;
int i=0;
while (p && i<pos-1)
{
p=p->next;
i++;
}
if (!p || i>pos-1)
{
printf_s("插入位置不合法!\r\n");
return FALSE;
}
q=(node *)malloc(sizeof(node));
q->ldata =dat;
q->next=p->next;
p->next=q;
return TRUE;
}
rType lsList(LinkList head)
{
LinkList p=head->next;
if(!p)
printf_s("\r\n第一个非头节点为空\r\n");
else
{
while (p)
{
printf_s("%6d
",p->ldata);
p=p->next;
}
printf_s("\r\n");
}
return TRUE;
}
void fun(node *la,node *lb)
{
while(NULL != la->next)
//////
la->next = lb->next;
free(lb);
}
int _tmain(int argc, _TCHAR* argv[])
{
int i;
node *testList1,*testList2;
initList(&testList1);
initList(&testList2);
for (i=1;i<4;i++)
{
insNode(testList1,i,i);
insNode(testList2,i+3,i);
}
lsList(testList1);
lsList(testList2);
fun(testList1,testList2);
lsList(testList1);
system("pause");
return 0;
}
[
本帖最后由 dickdick117 于 2014-4-29 17:25 编辑 ]