C 字符双链表

C 字符双链表,c,pointers,char,malloc,doubly-linked-list,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; c

我已经为双链接列表创建了一个结构和函数。它完美地处理整数,但现在我必须将其转换为使用字符。我总是有一个问题,当它涉及到字符,而且当我把一个字符,我得到一个恒定的循环

到目前为止,我已经:

 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:错误:请求非结构或联合中的成员'data' null.c:17:警告:来自不兼容指针类型的赋值

这应该是,

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

这是正确的…var的类型不是“struct node”,因此您不能执行var->data。

只是一个小问题:您是在尝试创建一个单字符数据列表,还是要创建一个字符串列表(每个元素中有多个字符)


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

谢谢,但是现在当我输入'a'时,它返回97而不是'a',是的。
'a'
是一个值为97的整数。如果您试图将其打印为字符,则格式说明符是
%c
,而不是
%d
。您希望数据的大小为1个字符,还是希望数据字符串的长度为100?我的菜单基本上应该是在开头加上“a”,在结尾加上“b”,在“c”之前加上“c”作为“d”,然后显示。所以只有1个字符,但看看下面的帖子,它修复了错误,但没有返回“a”,不,只有一个,我在上面的帮助下找到了答案。
struct node *var= malloc( sizeof( struct node ) );