• 大华2014校园招聘面试题链式存储串的连接操作


     1 #include <stdio.h>
     2 
     3 #define N   4
     4 
     5 typedef struct Block
     6 {
     7    char buffer[N];
     8    struct Block *next;
     9 }Block;
    10 
    11 typedef struct
    12 {
    13        Block *head;
    14        Block *tail;
    15     int  len;
    16 }BLString;
    17 
    18 
    19 void BLStringAppend(BLString* s1, BLString* s2)
    20 {
    21     if(NULL == s1 || NULL == s2)//参数无效
    22         return;
    23     if(NULL == s1->head && NULL == s2->head)//链表都为空
    24         return;
    25     if(NULL == s1->head && NULL != s2->head)
    26     {
    27         s1->head = s2->head; //直接串2的头赋值给串1的头指针
    28         return;
    29     }
    30     
    31     s1->tail->next = s2->head;//先将s2的头和s1的尾相连接
    32 
    33     Block *cur_node = s1->tail;
    34     Block *pnode = s2->head;
    35     int cur_len = strlen(cur_node);
    36     int i;
    37     while(pnode != s2->tail)
    38     {
    39         for(i = 0; i <  N - cur_len; i++)
    40         {
    41             cur_node->buffer[cur_len+ i] = pnode->buffer[i];
    42         }
    43         for(i = 0; i < cur_len; i++)
    44         {
    45             pnode->buffer[i] = pnode->buffer[i+cur_len];
    46         }
    47         cur_node = pnode;
    48         pnode = pnode->next;
    49     }
    50     
    51     int tail_len = strlen(s2->tail->buffer);
    52     if(tail_len < cur_len)
    53     {
    54         for(i = 0; i < tail_len; i++)
    55         {
    56             cur_node->buffer[cur_len+ i] = pnode->buffer[i];
    57         }
    58         cur_node->buffer[cur_len+i] = '';
    59         s1->tail = cur_node;
    60         cur_node->next = NULL;
    61 
    62         free(pnode);
    63     }
    64     else{
    65         for(i = 0; i <  N - cur_len; i++)
    66         {
    67             cur_node->buffer[cur_len+ i] = pnode->buffer[i];
    68         }
    69         for(i = 0; i < tail_len-(N-cur_len); i++)
    70         {
    71             pnode->buffer[i] = pnode->buffer[i+cur_len];
    72         }
    73         pnode->buffer[i] = '';
    74     }
    75 }
  • 相关阅读:
    大数据-storm理论
    大数据-hadoop理论
    大数据-spark理论(3)sparkSql,sparkStreaming,spark调优
    大数据-spark理论(2)算子,shuffle优化
    大数据-spark理论(1)初识,原理,搭建
    Linux Bash 文件加载顺序
    Git Flow 自动化发布
    IntelliJ 报错 Error occurred during initialization of VM
    Jenkins Pipeline Build 不下载最新的包
    【从零单排】Java 8 实战演练
  • 原文地址:https://www.cnblogs.com/xuyh/p/3489388.html
Copyright © 2020-2023  润新知