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