满意答案
篜峯
2013.07.03
采纳率:42% 等级:12
已帮助:7220人
#include
#include
#include
#include
typedef struct lnode
{
int data;
struct lnode *next;
}lnode ,*linklist;
//建立一个空表,初始化,并对其进行输入值
void creatlinklist(linklist &l,int n)
{
l=(linklist)malloc(sizeof(lnode));
if(!l)
exit(OVERFLOW);
l->next=l;//循环链表
linklist p,q;
int i;
q=l;
printf("please input %d data:\n",n);
for(i=0;i<=n-1;i++)
{
p=(linklist)malloc(sizeof(lnode));
scanf("%d",&p->data);
p->next=q->next;
q->next=p;
q=p;
}
}
//逆置函数
void invert(linklist &l)
{
linklist p,q,r;
p=l->next;
q=p->next;
r=q->next;
while(p!=l)
{
q->next=p;
p=q;
q=r;
r=r->next;
}
q->next=l->next;
}
int main()
{
linklist l,p;
int length,i;
printf("please input the length of the list:\n");
scanf("%d",&length);
creatlinklist(l,length);
p=l->next;
while(p!=l)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
invert(l);
p=l->next;
do
{
printf("%d ",p->data);
p=p->next;
} while(p!=l->next);
printf("\n");
return 0;
}
00分享举报