1

我为双向链表创建了一个结构和函数。它对整数完美无缺,但现在我必须将其转换为使用字符。在角色方面,我总是遇到问题,当我输入一个角色时,我会得到一个恒定的循环。

到目前为止,我有:

 struct node
{
      struct node *previous;
      char data;
      struct node *next;
}*head, *last; 

 void begin(char value)
 {
     struct node *temp;
 char *var=(char *)malloc(sizeof(char)*100);
 var->data=value;
 if(head==NULL)
 {
     head=var;
     head->previous=NULL;
     head->next=NULL;
     last=head;
 }
 else
 {
     temp=var;
     temp->previous=NULL;
     temp->next=head;
     head->previous=temp;
     head=temp;
 }
} 

我使用了我之前使用字符的 push/pop 函数中的一些示例,但我不确定我做错了什么。

编辑:忘记输入错误> null.c:14:错误:请求成员“数据”不是结构或联合 null.c:17:警告:来自不兼容的指针类型的赋值

4

3 回答 3

3
char *var=(char *)malloc(sizeof(char)*100);

这应该是,

struct node *var= malloc( sizeof( struct node ) );
于 2013-05-09T19:27:50.847 回答
0

没错... var 的类型不是 'struct node' 所以你不能做 var->data。

于 2013-05-09T19:28:51.223 回答
0

只是一个小问题:您是要制作单个 char 数据的列表,还是要制作一个字符串列表(每个元素中有多个 char)?

我问'因为“malloc(sizeof(char)*100);” 给我的印象是你试图保存一个长度为 100 字节的字符串,但是,该函数只接收一个字符。(-:

于 2013-05-09T20:54:33.287 回答