当前位置: 技术问答>linux和unix
关于C语言的glib的链表
来源: 互联网 发布时间:2016-07-23
本文导语: #include #include #include int main() { int i; GList*A=NULL; char a[100]; for(;;) { printf("Input a new string:n"); gets(a); A=g_list_append(A,a); printf("The list now is:n"); for(i=0;g...
#include
#include
#include
int main()
{
int i;
GList*A=NULL;
char a[100];
for(;;)
{
printf("Input a new string:n");
gets(a);
A=g_list_append(A,a);
printf("The list now is:n");
for(i=0;g_list_nth_data(A,i)!=NULL;i++)
printf("%sn",g_list_nth_data(A,i));
}
return 0;
}
这是我写的一个程序,运行时我每次分别输入字符串aaa,bbb,ccc,ddd按照我的想法,链表里的内容应该为aaa,bbb,ccc,ddd才对呀,可是运行结果 怎么会下面这样呢?
Input a new string:
aaa
The list now is:
aaa
Input a new string:
bbb
The list now is:
bbb
bbb
Input a new string:
ccc
The list now is:
ccc
ccc
ccc
Input a new string:
ddd
The list now is:
ddd
ddd
ddd
ddd
#include
#include
int main()
{
int i;
GList*A=NULL;
char a[100];
for(;;)
{
printf("Input a new string:n");
gets(a);
A=g_list_append(A,a);
printf("The list now is:n");
for(i=0;g_list_nth_data(A,i)!=NULL;i++)
printf("%sn",g_list_nth_data(A,i));
}
return 0;
}
这是我写的一个程序,运行时我每次分别输入字符串aaa,bbb,ccc,ddd按照我的想法,链表里的内容应该为aaa,bbb,ccc,ddd才对呀,可是运行结果 怎么会下面这样呢?
Input a new string:
aaa
The list now is:
aaa
Input a new string:
bbb
The list now is:
bbb
bbb
Input a new string:
ccc
The list now is:
ccc
ccc
ccc
Input a new string:
ddd
The list now is:
ddd
ddd
ddd
ddd
|
char b[]="bbb";
n=g_list_index(A,b)
因为是比较指针,不是比较指针内容
/**
* g_list_index:
* @list: a #GList
* @data: the data to find
*
* Gets the position of the element containing
* the given data (starting from 0).
*
* Returns: the index of the element containing the data,
* or -1 if the data is not found
*/
gint
g_list_index (GList *list,
gconstpointer data)
{
gint i;
i = 0;
while (list)
{
if (list->data == data)
return i;
i++;
list = list->next;
}
return -1;
}
n=g_list_index(A,b)
因为是比较指针,不是比较指针内容
/**
* g_list_index:
* @list: a #GList
* @data: the data to find
*
* Gets the position of the element containing
* the given data (starting from 0).
*
* Returns: the index of the element containing the data,
* or -1 if the data is not found
*/
gint
g_list_index (GList *list,
gconstpointer data)
{
gint i;
i = 0;
while (list)
{
if (list->data == data)
return i;
i++;
list = list->next;
}
return -1;
}
|
你最好还是把函数的说明搞清楚再写程序吧,边猜边写是不行的。
int main()
{
int i,n;
GList*A=NULL;
gconstpointer p,sp=NULL;
for(n=0;n
int main()
{
int i,n;
GList*A=NULL;
gconstpointer p,sp=NULL;
for(n=0;n
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!