【问题标题】:Struct inside struct in doubly linked list双向链表中的结构内部结构
【发布时间】:2019-05-02 11:58:35
【问题描述】:

我想创建一个双向链表。在节点中,这些数据必须在:姓名、姓氏、部门、年级。 我的结构是,

typedef struct DATA{
    long Number;
    char name[30],lastname[30],department[50];
    int grade;
}DATA;

struct DATA* data;
typedef struct node{
    DATA data;
    struct node* next;
    struct node* prev;
}node;

struct node* start=NULL;

我正在尝试与

struct node* CreateNode(int number, char name1[30], char lastname1[30], char department1[50])
{
    struct node* newNode = (struct node*)malloc(sizeof(struct node));
    data->Number=number;
    data->name[30]=name1[30];
    data->lastname[30]=lastname1[30];
    data->department[50]=department1[50];
    newNode->next=NULL;
    newNode->prev=NULL;
    return newNode;
}

void SonaEkleme(int number, char name1[30], char lastname1[30], char department1[50])
{
    struct node* addData = CreateNode(number, name1, lastname1, department1);

    if (start==NULL) 
    {
        start=addData;
    }
    else
    {
        struct node* temp=start;
        while(temp->next!=NULL)
        {
            temp=temp->next;
         }
         addData->prev=temp;
         temp->next=addData;
    } 
}

但它无法添加新节点。如何在双向链表节点中再添加一条数据?

【问题讨论】:

  • 您需要花一些时间更好地了解数组在 C 中是如何工作的。您的语法在假设上是错误的,并且您为每个分配复制 one char,甚至那么,他们就错了(越界)。
  • 除了whozcraig的评论数据->name[30]=name1[30];是UB ...并且可能会崩溃。您的数组大小为 30。这意味着您有 0-29 个元素

标签: c struct linked-list


【解决方案1】:

我认为您将 temp 的内容与 temp 本身混淆了!

*temp=temp->next;

【讨论】:

    猜你喜欢
    • 2015-12-27
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2021-05-11
    • 1970-01-01
    • 2018-09-11
    相关资源
    最近更新 更多