字符双向链表
Posted
技术标签:
【中文标题】字符双向链表【英文标题】:Char Doubly-linked list 【发布时间】:2013-05-04 09:15:50 【问题描述】:我已经为双向链表创建了一个结构和函数。它对整数完美无缺,但现在我必须将其转换为使用字符。在角色方面,我总是遇到问题,当我输入一个角色时,我会得到一个恒定的循环。
到目前为止我有:
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:警告:来自不兼容指针类型的赋值
【问题讨论】:
您希望数据的大小为 1 个字符,还是尝试使数据字符串的长度为 100? 我的菜单是这样制作的,基本上它应该是在开头添加'a',添加'b',在末尾添加'c',在'c'之前插入'd',然后显示。所以只有 1 个字符,但请看下面的帖子,它修复了错误但没有返回 'a' 【参考方案1】:char *var=(char *)malloc(sizeof(char)*100);
应该是这样的,
struct node *var= malloc( sizeof( struct node ) );
【讨论】:
谢谢,但现在当我输入 'a' 时它返回 97 而不是 'a' 嗯,是的。'a'
是一个值为 97 的整数。如果您尝试将其打印为字符,则格式说明符是 %c
,而不是 %d
。【参考方案2】:
没错...var的类型不是'struct node'所以你不能做var->data。
【讨论】:
【参考方案3】:只是一个小问题:您是要创建一个单字符数据列表还是要创建一个字符串列表(每个元素中包含多个字符)?
我问'因为“malloc(sizeof(char)*100);”给我的印象是你试图保存一个长度为 100 字节的字符串,但是,该函数只接收一个字符。 (-:
【讨论】:
不,只有一个,我在上面的帮助下弄明白了。以上是关于字符双向链表的主要内容,如果未能解决你的问题,请参考以下文章