是鱼不是魚 2021-10-22 13:28 采纳率: 0%
浏览 229
已结题

队列实现密码加密解密



#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef int DataType;


//队列数据元素结构
typedef struct node
{
   DataType info;
   struct node *next;
}QueueData;

typedef struct queueRecord{
   QueueData  *front;   //头指针
   QueueData  *rear ;   //尾指针
 }LINKQUEUE;

typedef struct queueRecord *PLinkQueue;

PLinkQueue createEmptyQueue_link( )
{
   //创建一个空队列,实质:生成一个LINKQUEUE类型的结点,并给front 和 rear 成员赋值
    //请在此处填写代码,完成相应功能
    /*-------begin----------*/
    PLinkQueue que;
    que = (PLinkQueue)malloc(sizeof(struct queueRecord));
    que->front = NULL;
    que->rear = NULL;

    return que;


    /*-------end----------*/

}

int isEmptyQueue_link(PLinkQueue  queue)
{ //判定队列是否为空,实质: 看队列的front指针是否为空,若为空,则队列为空

  //请在此处填写代码,完成相应功能
    /*-------begin----------*/
    if(queue->front == NULL) return 1;
    else return 0;

    /*-------end----------*/
}

 void enQueue_link(DataType x, PLinkQueue queue)
 {
   //将数据元素x插入队尾。实质:生成一个struct node类型的结点,并给相应成员赋值后插入队尾
    //请在此处填写代码,完成相应功能
    /*-------begin----------*/
         struct node* p = (struct node*)malloc(sizeof(struct node));
         p->info = x;
         p->next = NULL;
    if(isEmptyQueue_link(queue) == 1)
            {queue->rear = p;    queue->front = p;}
    else {
       queue->rear->next = p;
       queue->rear = p;
    }
    /*-------end----------*/
 }

void enQueuelink(QueueData *p,PLinkQueue Q)
 {
  //本函数的功能是将 struct node 类型的结点插入队尾,与enQueue_link(DataType x, PLinkQueue queue)的区别是,不需要生成结点

     //请在此处填写代码,完成相应功能
    /*-------begin----------*/
    if(isEmptyQueue_link(Q) == 1)
    {
      Q->front = p;
      Q->rear = p;
    }
    else{
        Q->rear->next =  p ;
        Q->rear = p;
    }
    /*-------end----------*/
 }

DataType deQueue_link(PLinkQueue Q)
 {
     //出队,实质: 取出Q队列的队首结点,返回该结点的数据元素,并将该结点使用enQueue_link(QueueData *p,PLinkQueue Q)插入队尾
     //本函数为针对本实验特殊设计,可实现秘钥的循环使用
     //请在此处填写代码,完成相应功能
    /*-------begin----------*/
        DataType tem;
        if(Q->front == NULL) return 0;
        else if(Q->front == Q->rear)
        {   tem = Q->front->info;
           /* Q->front = NULL;
            Q->rear = NULL;
            enQueue_link(tem,Q);*/
            return tem;
        }
        else{
            tem = Q->front->info;
            Q->front = Q->front->next;
            enQueue_link(tem,Q);
            return tem;
             }
    /*-------end----------*/
 }

 void decrypt(char src[], char key[], char dest[])
 {
     /*  参数: src 放的是源文 ; key 放的是秘钥 ; dest 放加密后的密文
       加密函数: 步骤提示
       1. 初始化一个空队列Q
       2. 将key数组的元素逐个插入队列Q
       3. 逐个访问src数组的源文,并加密, 使用deQueue_link(Q)函数可得到队首秘钥,并使秘钥循环使用
    */
        int i=0,j=0;
        PLinkQueue que = createEmptyQueue_link( );
        while(j<strlen(key))
        {
            enQueue_link(*(key+i),que);
            i++;j++;
        }
        i = 0;int  k=0;DataType tem;
         while(k<strlen(src))
         {
            tem = deQueue_link(que);
            *(dest+i) = *(src+i) + tem;
            i++;k++;
         }
         //dest[i] = '\0';
 }

 int main(void)
 {
     char src[80] , key[20], dest[80] ;
    gets(src) ;
     gets(key);
     decrypt(src , key , dest);
    //puts(dest);
    /*
    PLinkQueue A = createEmptyQueue_link( );
    enQueue_link(, A);
    enQueue_link(0, A);
    enQueue_link(2, A);
    enQueue_link(6, A);
    enQueue_link(8, A);
    enQueue_link(8, A);
    enQueue_link(9, A);
    DataType tem;
    int i=0;
    while(i<20)
    {
       tem =  deQueue_link(A);
        i++;
        printf("%c ",tem);
    }*/




 }


  • 写回答

1条回答 默认 最新

  • 有问必答小助手 2021-10-25 10:46
    关注

    你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


    本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


    因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 创建了问题 10月22日

悬赏问题

  • ¥15 魔霸ROG7 pro,win11.息屏后会显示黑屏,如图,如何解决?(关键词-重新启动)
  • ¥15 有没有人知道这是哪里出了问题啊?要怎么改呀?
  • ¥200 C++表格文件处理-悬赏
  • ¥15 Windows Server2016本地登录失败
  • ¥15 复合卡卡号轨道写入芯片卡
  • ¥20 基于MATLAB的TDOA
  • ¥15 为啥输入字体突然变了
  • ¥20 已知坐标,换成MATLAB可以用的数据
  • ¥15 这个python五子棋代码的每一句意思是什么啊
  • ¥15 求一段隐藏代码,隐藏一些内容