麻烦大家帮我看看,我用C语言编写的单链表有什么错误,在线急等!!!
#include<stdio.h>#include<stdlib.h>typedefstructlist_node{chardata;structlist_node*ne...
#include <stdio.h>
#include <stdlib.h>
typedef struct list_node
{
char data;
struct list_node *next;
}linklist;
linklist *creatlist_rear() //尾插入法建立单链表
{
char ch;
linklist *head,*s,*r;
head=NULL;
r=NULL;
ch=getchar();
while(ch!='#')
{
s=(linklist *)malloc(sizeof(linklist));
s->data=ch;
if(head==NULL)
{
head=s;
}
else
{
r->next=s;
}
r=s;
ch=getchar;
}
if(r!=NULL)
{
r->next=NULL;
}
return head;
}
void displaynode(linklist *head) //打印链表里的数据
{
linklist *p=head;
int j=1;
while(p!=NULL)
{
printf("%5d%10c\n",j,p->data);
p=p->next;
j++;
}
}
void deletememory(linklist *head) //释放链表里的数据
{
linklist *p=head,*pr=NULL;
while(p!=NULL)
{
pr=p;
p=p->next;
free(pr);
}
}
int main()
{
int i=0;
linklist *head=NULL;
printf("请输入数据,按井号键结束\n");
head=creatlist_rear();
displaynode(head);
deletememory(head);
} 展开
#include <stdlib.h>
typedef struct list_node
{
char data;
struct list_node *next;
}linklist;
linklist *creatlist_rear() //尾插入法建立单链表
{
char ch;
linklist *head,*s,*r;
head=NULL;
r=NULL;
ch=getchar();
while(ch!='#')
{
s=(linklist *)malloc(sizeof(linklist));
s->data=ch;
if(head==NULL)
{
head=s;
}
else
{
r->next=s;
}
r=s;
ch=getchar;
}
if(r!=NULL)
{
r->next=NULL;
}
return head;
}
void displaynode(linklist *head) //打印链表里的数据
{
linklist *p=head;
int j=1;
while(p!=NULL)
{
printf("%5d%10c\n",j,p->data);
p=p->next;
j++;
}
}
void deletememory(linklist *head) //释放链表里的数据
{
linklist *p=head,*pr=NULL;
while(p!=NULL)
{
pr=p;
p=p->next;
free(pr);
}
}
int main()
{
int i=0;
linklist *head=NULL;
printf("请输入数据,按井号键结束\n");
head=creatlist_rear();
displaynode(head);
deletememory(head);
} 展开
1个回答
展开全部
好像没什么大问题,只是粗心问题,代码的执行逻辑没有看但,好像结果正确的,改后的注释在代码上,希望对你有帮助!
#include <stdio.h>
#include <stdlib.h>
typedef struct list_node
{
char data;
struct list_node *next;
}linklist;
linklist *creatlist_rear() //尾插入法建立单链表
{
char ch;
linklist *head,*s,*r;
head=NULL;
r=NULL;
ch=getchar();
while(ch!='#')
{
s=(linklist *)malloc(sizeof(linklist));
s->data=ch;
if(head==NULL)
{
head=s;
}
else
{
r->next=s;
}
r=s;
ch=getchar();//这句少了个()变成赋值变量了
}
if(r!=NULL)
{
r->next=NULL;
}
return head;
}
void displaynode(linklist *head) //打印链表里的数据
{
linklist *p=head;
int j=1;
while(p!=NULL)
{
printf("%5d%10c\n",j,p->data);
p=p->next;
j++;
}
}
void deletememory(linklist *head) //释放链表里的数据
{
linklist *p=head,*pr=NULL;
while(p!=NULL)
{
pr=p;
p=p->next;
free(pr);
}
}
int main()
{
int i=0;
linklist *head=NULL;
printf("请输入数据,按井号键结束\n");
head=creatlist_rear();
displaynode(head);
deletememory(head);
return 0;//最好加上这句
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询