求高手帮我看看这个程序

czynwpu 2009-07-15 08:11:13
#include<math.h>
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{char data;
struct LNode *Next;
}LNode,*LinkList;

void CreateList(LinkList &L,int n)
{LNode *p=NULL;
L=(LinkList)malloc(sizeof(LNode));
L->Next=NULL;
for(int i=n;i>0;i--)
{ p=(LinkList)malloc(sizeof(LNode));
printf("Please input the No.%d elem : ",i);
scanf("%s",&p->data);
p->Next=L->Next;L->Next=p;
}
}

void main()
{LinkList La,Lb,Lc;
LNode *pa=NULL;
LNode *pb=NULL;
LNode *pc=NULL;
CreateList(La,4);
pa=La->Next;
CreateList(Lb,3);
pb=Lb->Next;
Lc=La;pc=Lc;
while(!(pa==NULL) && (pb==NULL))
{ if(pa->data<=pb->data)
{pc->Next=pa;pc=pa;pa=pa->Next;}
else
{pc->Next=pb;pc=pb;pb=pb->Next;}
}
pc->Next=pa?pa:pb;
pc=Lc;
while(pc->Next)
{printf("%s",pc->data);
pc=pc->Next;
}
free(Lb);
}
...全文
24 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
youx2008 2009-07-15
  • 打赏
  • 举报
回复
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct LNode
{
int data;
struct LNode *Next;
}LNode,*LinkList;

void CreateList(LinkList &L,int n)
{
LNode *p=NULL;

L=(LinkList)malloc(sizeof(LNode));
memset(L, 0, sizeof(LNode));
L->Next=NULL;
printf("n = %d\n",n);

for(int i=n;i>0;i--)
{
p=(LinkList)malloc(sizeof(LNode));
memset(p, 0, sizeof(LNode));
printf("Please input the No.%d elem : \n",i);
scanf("%d",&p->data);
p->Next=L->Next;
L->Next=p;
}
}

void main()
{
LinkList La,Lb,Lc;
LNode *pa=NULL;
LNode *pb=NULL;
LNode *pc=NULL;
bool FirstFlag = true;

CreateList(La,4);
pa=La->Next;
CreateList(Lb,3);
pb=Lb->Next;
Lc=La;
// pc=Lc;

while ((pa != NULL) && (pb != NULL))
{
if (pa->data <= pb->data)
{
if (FirstFlag)
{
pc = pa;
Lc = pc;
FirstFlag = false;
}
else
{
pc->Next = pa;
pc = pc->Next;
}

pa = pa->Next;
pc->Next = NULL;
}
else
{
if (FirstFlag)
{
pc = pb;
Lc = pc;
FirstFlag = false;
}
else
{
pc->Next=pb;
pc = pc->Next;
}

pb = pb->Next;
pc->Next = NULL;
}
}

// pc->Next=pa?pa:pb;
while (pa != NULL)
{
if (FirstFlag)
{
pc = pa;
Lc = pc;
FirstFlag = false;
}
else
{
pc->Next = pa;
pc = pc->Next;
}

pa = pa->Next;
}

while (pb != NULL)
{
if (FirstFlag)
{
pc = pb;
Lc = pc;
FirstFlag = false;
}
else
{
pc->Next = pb;
pc = pc->Next;
}

pb = pb->Next;
}

pc = Lc;

while (pc->Next != NULL)
{
printf("aaaaaaaaa = %d\n",pc->data);
pc = pc->Next;
}

pc = Lc;

while (pc->Next != NULL)
{
Lc= pc;
pc = pc->Next;
free(Lc);
}
}

不知道楼主想要一个什么样的结果,楼主不妨参考一下
selooloo 2009-07-15
  • 打赏
  • 举报
回复
scanf("%s",&p->data);
应该是scanf("%c",&p->data); 吧
个人认为用 getchar()更好一些,scanf容易引起无法想到的错误

czynwpu 2009-07-15
  • 打赏
  • 举报
回复
由于时间的匆忙,没有来得及注释。程序主要是实现两个链表的合并。编译没问题,主要是运行的结果不合要求。
haierpro 2009-07-15
  • 打赏
  • 举报
回复
请问你想要实现什么样的功能?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧