Have is a binary image consist of "0‟ and ".‟ where "0‟ means a black pixel and „.‟ means a white pixel. Store this image using one singly list per row . Finally show its mirror image.
Each node may contain an integer counter for counting number of following "0‟s or ".‟s.
Simply insert a node after dummy node of a row
Input:
20 32
00000000000000000000000000000000
00000.....0000.....0000......000
0000.00000000.00000.000.00000000
000.000000000.000000000.00000000
000.0000000000.....0000....00000
000.000000000000000.000.00000000
0000.00000000.00000.000.00000000
00000.....0000.....0000......000
00000000000000000000000000000000
00000000000000000000000000000000
0000000000000.000000.00000000000
000000000000..00000..00000000000
00000000000...0000...00000000000
0000000000000.000000.00000000000
0000000000000.000000.00000000000
0000000000000.000000.00000000000
0000000000000.000000.00000000000
000000000000...0000...0000000000
00000000000.....00.....000000000
00000000000000000000000000000000
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
typedef struct List
{
char str[100];
struct List* pNext;
}List;
void pushList(List** hd, const char* s)
{
if ((*hd) == NULL)
{
(*hd) = (List*)malloc(sizeof(List));
(*hd)->pNext = NULL;
strcpy((*hd)->str, s);
}
else
{
List* p = (*hd);
while (p->pNext)
{
p = p->pNext;
}
List* nw = (List*)malloc(sizeof(List));
nw->pNext = NULL;
strcpy(nw->str, s);
p->pNext = nw;
}
}
void PrintList(List* h)
{
List* p = h;
while (p)
{
char cur[100];
strcpy(cur, p->str);
for (int i = 0; i < strlen(cur); i++)
if (cur[i] == '0')
cur[i] = '.';
else
cur[i] = '0';
printf("%s\n", cur);
p = p->pNext;
}
}
void clearList(List** h)
{
List* pr = NULL;
while ((*h)->pNext)
{
pr = (*h);
(*h) = (*h)->pNext;
free(pr);
}
free((*h));
}
int main()
{
int row;
int col;
scanf("%i%i", &row, &col);
List* hd = NULL;
for (int i = 0; i < row; i++)
{
char cur[100];
scanf("%s", &cur);
pushList(&hd, cur);
}
printf("===================================================\n");
PrintList(hd);
clearList(&hd);
return 0;
}
Comments
Leave a comment