请高手帮看看我写的这个链表操作的小程序
这两天开始研究链表操作。写了一个测试操作方法的小程序,节点删除好像节点只删了半个汉字,删得成功也会有一个ASCII码的空格,有时候还会出现乱码。一下子还想不出哪里有问题,望有经验的朋友帮我看看,谢谢!#include"STDIO.H"
#include"STDLIB.H"
#include"CONIO.H"
#define Enter 0x0D
struct Text
{
char text;
struct Text *next;
};
typedef struct Text Text;
Text *HEAD;
Text *Link_Build();
void Link_Output(Text *Head);
void Node_Delect(Text *Head);
void Link_Delect(Text *Head);
void main()
{
HEAD=Link_Build();
putch('\n');
Link_Output(HEAD);
Node_Delect(HEAD);
putch('\n');
Link_Output(HEAD);
Link_Delect(HEAD);
}
Text *Link_Build()
{
Text *Head=NULL,*ptr_1,*ptr_2;
ptr_1=(Text *)malloc(sizeof(Text));
ptr_1->next=NULL;
Head=ptr_1;
ptr_2=ptr_1;
printf("\n请输入文字,并以Enter键结束:");
ptr_1->text=getch();
putch(ptr_1->text);
while(ptr_1->text!=Enter)
{
ptr_1=(Text *)malloc(sizeof(Text));
ptr_1->text=getch();
putch(ptr_1->text);
ptr_1->next=NULL;
ptr_2->next=ptr_1;
ptr_2=ptr_1;
}
return(Head);
}
void Link_Output(Text *Head)
{
Text *ptr=Head;
while(ptr!=NULL)
{
putch(ptr->text);
ptr=ptr->next;
}
}
void Node_Delect(Text *Head)
{
Text *ptr_1,*ptr_2=Head,*ptr_3,*ptr_4;
char text_h,text_l;
char Flag=0;
printf("\n请输入要删除的文字:");
text_l=getch();
text_h=getch();
putch(text_l);
putch(text_h);
putch('\n');
while(ptr_4->text!=text_h&&ptr_3->text!=text_l&&ptr_4->next!=NULL)
{
ptr_1=ptr_2;
ptr_2=ptr_1->next;
if(ptr_2->text==text_h&&ptr_1->text==text_l)
{
Flag=1;
break;
}
else
{
ptr_3=ptr_2->next;
ptr_4=ptr_3->next;
}
}
if(Flag==1)
{
Head=ptr_3;
free(ptr_2);
free(ptr_1);
}
else if(ptr_4->next==NULL)
{
ptr_2->next=NULL;
free(ptr_4);
free(ptr_3);
}
else
{
ptr_1=ptr_4->next;
ptr_2=ptr_1->next;
free(ptr_4);
free(ptr_3);
}
}
void Link_Delect(Text *Head)
{
Text *ptr_1,*ptr_2=Head;
while(ptr_2!=NULL)
{
ptr_1=ptr_2->next;
free(ptr_2);
ptr_2=ptr_1;
}
printf("\n内容已删除!\n");
}