求教关于循环链表逆置的问题?

来源:百度知道 编辑:UC知道 时间:2024/07/04 07:12:17
我要做关于循环链表就地逆置的作业;遇到了一个问题 ,编的下列程序不能执行,求教高手帮我改一下,可以做大的改动,也可以重新编一个,最好是考虑到各种输入不正确的情况,可以给以提示。
#include<stdio.h>
#include<stdlib.h>
void main()
{typedef struct node{//节点类型
int date;
struct node *next;
} node;
node *p,*q,*head;
int n;
int m=sizeof(node);
built();
display();
nizhi();
display();
}
void built();
{
int i,j;
head=(node*)malloc(m);
p=head;
print("请输入字符串")
do
{scanf("%c",&j);
if(j<a&&j>z||j<A&&j>Z)
{break;printf("date is wrong!")};
p->data=scanf("%c",&i);
p->next=(node*)malloc(m);
p=p->next;
}while(j!=13);
(p->priou)->next=null;
free(p);
}
void display()
{
p=head;
while(p)
{printf("%c",p->data);
p=p->next;
}
}
void nizhi()
{
p=head;
q=null;

修改如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{//节点类型
char date;
struct node *next;
}node;

node *p,*q,*head;
const int m=sizeof(node);//节点空间。
const int n=13;//节点数目。
void built();//函数原型声明。
void display();
void nizhi();
void display();

void main()
{
built();
display();
nizhi();
display();
}
void built()
{
char i;
int j=0;
head=(node*)malloc(m);
p=head;
printf("请输入字符串:");//如果有回车,也会输入进去。
do
{
scanf("%c",&i);
p->date=i;
j++;
if (j==n)//节点数目。
{
p->next=NULL;
break;
}
p->next=(node*)malloc(m);
p=p->next;
}while(true);
}
void display()
{
p=head;
while(p)
{
printf("%c",p->date);
p=p->next;
}
printf(&q