2013-07-23 3 views
0

Пример: «Это пример» следует преобразовать в «пример a is This» Один символ должен храниться как информация каждого узла. После этого я могу отменить все предложение (это -> «elpmaxe na si sihT»). Теперь, как я могу изменить каждое слово, чтобы получить: «Пример апа Это»Как отменить слова предложения в связанном списке?

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

struct node { 
    struct node *ptr; 
    char info; 
}; 

struct node *first,*ic; 
struct node * insertn(int n,struct node * first) 
{ 

    struct node *temp,*cur; 
    temp=(struct node *)malloc(sizeof(struct node)); 

    temp->info=n; 
    temp->ptr='\0'; 
    if(first=='\0') 
    { 

     return temp; 
    } 
    else{ 
     cur=first; 
     while(cur->ptr!='\0') 
     cur=cur->ptr; 
     cur->ptr=temp; 
     return first; 
    } 
} 
void disp(struct node *first) 
{ 
    printf("here"); 
    struct node *cur; 
    cur=first; 
    while(cur!='\0') 
    { 
     printf("%c",cur->info); 
     cur=cur->ptr; 

    } 
} 
void rev(struct node * p) 
{ 
    if(p->ptr=='\0') 
    { 

     first =p; 
     return; 
    } 

    rev(p->ptr); 

    struct node *q=p->ptr; 
    q->ptr=p; 
    p->ptr='\0'; 
} 

main() 
{ 
    char n; 
    int i=0; 

    first='\0'; 
    ic='\0'; 

    while(i<7) 
    { 

     i++; 
     printf("Enter element:"); 
     scanf("%c",&n); 
     first=insertn(n,first); 
    } 
    printf("ELEMENTS OF LIST BEFORE REV:"); 
    disp(first); 
    rev(first); 

    printf("\n\nELEMENTS OF LIST AFTER REV:"); 
    disp(first); 

} 
+0

Начните с форматирования кода, так как он плохо выглядит и нечитаемым. –

ответ

0

Прочитайте каждое слово и добавить его в качестве массива символов в узел. Затем прочитайте связанный список с начала и конца. Вы получите отмененное предложение.

------------------------------- 
+ *prev + "This" + *next + 
------------------------------- 

------------------------ 
+ *prev + "is" + *next + 
------------------------ 

------------------------ 
+ *prev + "an" + *next + 
------------------------ 

----------------------------- 
+ *prev + "example" + *next + 
----------------------------- 

Теперь читайте с конца, используя * пред.

0

Лучше всего хранить одно слово как информацию каждого узла. Как это:

#define LEN 10 

struct node{ 
    struct node *ptr; 
    char info[LEN+1]; // the length of each word cannot be more than LEN 
}; 

или

struct node{ 
    struct node *ptr; 
    char *info; 
}; 

Затем вы можете использовать функцию оборотов для достижения своей цели.

Если вы не хотите изменять структуру узла, вы должны разделить предложение на слова в соответствии с пробелом. Вы можете сначала отменить каждое слово, а затем отменить все предложение.

Как это: «Это пример» -> «отЭ си на elpmaxe» -> «Пример ап Это»

Смежные вопросы