C++改成C语言发现错误

来源:百度知道 编辑:UC知道 时间:2024/05/15 16:20:21
#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
char data;
Node *next;
}Node,*LinkList;

#define SIZE sizeof(Node)
#define FALSE 0
#define TRUE 1
void InitLinkList(LinkList Head)
{
char ch;Node *p=Head;
Head->next=NULL;
Head->data='\0';
scanf("%c",&ch);
while(ch!='#')
{
Node *newNode=(Node*)malloc(SIZE);
newNode->data=ch;
p->next=newNode;
p=p->next;
scanf("%c",&ch);
}
p->next=NULL;
}
int Check(char ch,LinkList Head)
{
Node *temp=Head->next;
int flag=TRUE;
while(temp!=NULL)
{
if(temp->data==ch){//不需要将数据插入
flag=FALSE;
return flag;
}
temp=temp->next;
}
return flag;
}
LinkList Merge(LinkList Head1,LinkList Head2)
{
LinkList Head=(Node*)malloc(SIZE);

// 就改动了最后几行代码, 我在vs2005上运行是可以的
printf("按y/Y继续,否则结束\n");

// 这里改动下, 先刷新输入缓冲区
char flushbuf[100];
fgets( flushbuf, 100, stdin );
scanf( "%c", &cmd ); // 这里你粗心了
}while( cmd == 'y'|| cmd == 'Y' );
return 0;
}

你这种代码,别人很难看的,把问题说清楚,别人也好帮你.

scanf("%c",&cmd);//确实漏了&而且这么多malloc一个free都没见到