【问题标题】: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'

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


【解决方案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 字节的字符串,但是,该函数只接收一个字符。 (-:

    【讨论】:

    • 不,只有一个,我在上面的帮助下弄明白了。
    猜你喜欢
    • 2021-05-25
    • 2015-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 2019-06-03
    • 2015-03-24
    • 2015-04-04
    相关资源
    最近更新 更多