/*****建立链表****/
head=(struct node *)malloc(sizeof(struct node)); //head永远指向“头”(其实是一个循环链表,头只是个标志)
p=head; //p表示成环前的“队尾”
for(i=0;i<(num-1);i++) //生成和字符串等长的链表
{
p->x=NULL; //暂时数据为空
p->flag=0; //flag = 0表示数据未写入,=1表示数据已经写入该节点
p->next=(struct node *)malloc(sizeof(struct node)); //下一节点空间申请
p=p->next; //指向“队尾”
}
p->x=NULL;
p->flag=0;
p->next=head; //把链表做成环
/****加密实现***/
p=head; //从“头开始”
for(i=0;i
for(j=1;j<=key;) //按密钥计数
{
p=p->next;
if(p->flag==0) j++; //flag=0才是没有被放入数据的节点
}
p->x=chr[i]; //按密钥要求数到该位置,则放入字符
p->flag=1; //标记该节点已写入数据,补再参加密钥计数
}
哇。。。