2013-07-23 57 views
0

例如: 「這是一個例子」應該變成「例子是這個」 一個字符應該被存儲爲每個節點的信息。 做完這些之後,我可以翻轉整個句子(即 - >「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 + 
----------------------------- 

現在使用* prev從結尾讀取。

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; 
}; 

然後你可以使用你的REV功能來實現自己的目標。

如果你不想改變節點的結構,你應該把這個句子分成空白的單詞。您可以先倒轉每個單詞,然後翻轉整個句子。

像這樣: 「這是一個例子」 - >「SIHT SI NA elpmaxe」 - >「例如爲這」