我为双向链表创建了一个结构和函数。它可以完美地用于整数,但现在我必须将其转换为使用字符。在字符方面我总是遇到问题,当我输入一个字符时,我会得到一个恒定的循环。
到目前为止,我有:
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:警告:从不兼容的指针类型分配
答案 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字节的字符串,但是,该函数只接收一个字符。 ( - :