📄 symmetri.bak
字号:
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#define MAXSTRLEN 20
struct charnode{
char value;
struct charnode* next;
};
struct charnode *head = NULL; //head of the link
int input_string_length;
void init_link( char* buffer )
{
int i;
struct charnode *p, *q;
for( i=0; i<strlen(buffer); i++ ){
p = (struct charnode *)malloc( sizeof( struct charnode ) );
p->value = buffer[i];
p->next = NULL;
if( head == NULL ){
head = p;
q = p;
continue;
}
q->next = p;
q = p;
}
}
void free_link()
{
struct charnode *p, *q;
for( p=head; p!=NULL; ){
q = p;
p = q->next;
free( q );
}
}
//This is a generic function, it retrieve the current value, and step further
// by this way, the action of retrieve value can be independant from specific
// storage method.
//In this function, i have implemented that for the link.
// if the storager is a stack or simply a array, only this function worth changing
//The return value is the character
char retrieve_value()
{
static struct charnode *p = NULL;
if (p == NULL) p = head;
else p = p->next;
return p->value;
}
//if the string is symmetric, return 0, else return value != 0
int is_symmetric()
{
char left_string[MAXSTRLEN]; //left string
char right_string[MAXSTRLEN]; //right string
int i;
for( i=0; i<input_string_length/2; i++ ) //copy left part
left_string[i] = retrieve_value();
left_string[i]='\0';
if( input_string_length%2 ) retrieve_value(); //for odd string length
for( i=0; i<input_string_length/2; i++ ) //copy right part
right_string[input_string_length/2-i-1] = retrieve_value();
right_string[i]='\0';
return strcmp( left_string, right_string );
}
void main()
{
char buffer[MAXSTRLEN];
puts( "Please input a string:" );
gets( buffer );
printf( "This string is:%s.\n", buffer );
if( strlen(buffer) > MAXSTRLEN ){
printf( "the length of the string should be less than:%d.\n", MAXSTRLEN );
return;
}
input_string_length = strlen(buffer);
init_link( buffer );
if ( !is_symmetric() ){
printf( "The string is symmetric!\n");
}else{
printf( "The string is NOT symmetric!\n" );
}
free_link();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -