Char Doubly-linked list

时间:2013-05-09 19:22:21

标签: c pointers char malloc doubly-linked-list

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

到目前为止,我有:

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

我使用了之前推送/弹出功能的一些例子,这些例子使用了字符,但我不确定我做错了什么。

编辑:忘记输入错误> null.c:14:错误:请求成员`data'不是结构或联合 null.c:17:警告:从不兼容的指针类型分配

3 个答案:

答案 0 :(得分:3)

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

这应该是,

struct node *var= malloc( sizeof( struct node ) );

答案 1 :(得分:0)

这是正确的...... var的类型不是'struct node'所以你不能做var->数据。

答案 2 :(得分:0)

一个小问题:您是否正在尝试制作单个字符数据列表,或者想要创建一个字符串列表(每个元素中有多个字符)?

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