2009-12-11 86 views
0

如何對鏈表中的字符串進行比較和排序,可以像這樣比較'Smith'>'Andersson'?在C編程語言中比較鏈表中的字符串

struct person { 
char name[20]; 
struct person *nextPerson; 
}; 

. 
void createNode(PersonPtr *sPtr, struct person t[]){ 
    PersonPtr newPtr; /* pointer to new node */ 
    PersonPtr previousPtr; /* pointer to previus node in list */ 
    PersonPtr currentPtr; /* pointer to current node in list */ 
. 
/* loop to find correct location in the list */ 
while (currentPtr != NULL && t->name > currentPtr->name) { /* this will not sort on name */ 
    previousPtr = currentPtr; /* walk to... */ 
    currentPtr = currentPtr->nextPerson; /* ...next node */ 
}/* end while */ 

回答

4

關閉,但不完全是,您不能只在字符串上使用「>」或「<」。你想要的是strcmp

你想要的是:

while (currentPtr != NULL && strcmp(t->name,currentPtr->name) > 0) 
+0

好,太好了,在我的腦海中C時 「自動」 相比,因爲焦炭= INT一個chararray。 – 2009-12-11 09:38:45

+0

但它不能自動比較一個int數組,所以它實際上是有意義的。 – KeatsPeeks 2009-12-11 09:40:07

+0

char是一個整數,但它不是'int'。 – nos 2009-12-11 09:46:33

1

strcmp(3)

編輯:您的變量t->name是指向一個char。當你做t->name > currentPtr->name你正在比較它們的值,即字符地址。

0

不,您不能只使用>運算符。您需要調用庫函數strcmp

0

如果用「chararrays」表示「字符串」,那麼可以使用strcmp來比較它們。