结构体和双链表 struct myStruct int ID; int TYPE; char NAME[20]; ;

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体和双链表 struct myStruct int ID; int TYPE; char NAME[20]; ;相关的知识,希望对你有一定的参考价值。

我已经定义了以上的一个结构体,怎么创建一个双链表把这个双链表和上面的结构体关联起来。
我的目的是:从文件中读取了数据存入到结构体,这个我已经完成了,现在是再把数据存入到双链表中

#include<stdio.h>

#include<malloc.h>

#include<stdlib.h>

#include<string.h>

typedef struct Node

int ID; 

int TYPE; 

char NAME[20]; 

struct Node *prior;

struct Node *next;

node;

typedef struct  mystruct

 

int ID; 

int TYPE; 

char NAME[20]; 

info;

node* init_list(node *head)

head = (node*)malloc(sizeof(node));

head->prior = head->next = head;

return head;

/*参数分别是当前链表头结点,插入的位子n,和插入的个人信息ds*/

node* insert_node(node *head,int n,info* ds)

int count = 0;

node *new_node,*curr_node;

curr_node = head;//当前指针指向头结点

if(curr_node->next == head)

new_node = (node*)malloc(sizeof(node));//当原双链表是空是,创建新结点

/*将你文件中的数据读入到结点中,你已经实现,我就不写了*/

new_node->ID = ds->ID;

strcpy(new_node->NAME,ds->NAME);

new_node->TYPE = ds->TYPE;

curr_node->next = new_node;

new_node->prior = curr_node;

new_node->next = NULL;

curr_node = new_node;

return head;

else if(n == 1)

new_node = (node*)malloc(sizeof(node));

new_node->ID = ds->ID;

strcpy(new_node->NAME,ds->NAME);

new_node->TYPE = ds->TYPE;

new_node->next = head->next;

head->next->prior = new_node;

head->next = new_node;

new_node->prior = head;

return head;

else

while(count < n - 1 && curr_node->next != NULL)

count++;

curr_node = curr_node->next;

if(curr_node->next = NULL)

return 0;

else

new_node = (node*)malloc(sizeof(node));

new_node->ID = ds->ID;

strcpy(new_node->NAME,ds->NAME);

new_node->TYPE = ds->TYPE;

new_node->next = curr_node->next;

//curr_node->next->prior = new_node;

curr_node->next = new_node;

new_node->prior = curr_node;

return head;

void disp_list(node *head)

node *curr_node;

curr_node = head->next;

while(curr_node != NULL)

printf("%d  %s  %d\\n",curr_node->ID,curr_node->NAME,curr_node->TYPE);

curr_node = curr_node->next;

printf("\\n");

int main()

node* head;

head = init_list(head);

info * ds;

ds = (info*)malloc(sizeof(info));

ds->ID = 1234;

strcpy(ds->NAME,"dszhazha");

ds->TYPE = 7;

insert_node(head,1,ds);

insert_node(head,2,ds);

insert_node(head,3,ds);

insert_node(head,4,ds);

insert_node(head,5,ds);

disp_list(head);

return 0;

参考技术A struct d_link struct d_link *pre; struct myStruct *data; struct d_link *next;;

结构体和共用体

一、结构体和共用体的区别

    1. structunion都是由多个不同的数据类型成员组成, 但在任何同一时刻, union中只存放了一个被选中的成员, 而struct的所有成员都存在。在struct中,各成员都占有自己的内存空间,它们是同时存在的。一个struct变量的总长度等于所有成员长度之和。在Union中,所有成员不能同时占用它的内存空间,它们不能同时存在。Union变量的长度等于最长的成员的长度。

    2. 对于union的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于struct的不同成员赋值是互不影响的。

二、来一段结构体和共用体的组合使用小程序

#include<stdio.h>
#include<stdlib.h>

typedef struct _ColorARGB{
        unsigned short int alpha;
        unsigned short int red;
        unsigned short int green;
        unsigned short int blue;
}ColorARGB;

typedef union _Color{
        unsigned long int color;
        ColorARGB colorArgb;
}Color;


int main(void)
{
        Color c;
        c.color=0xFFFEED2B12345678;
        printf("%d    %d\n",sizeof(c.colorArgb.red),sizeof(c.color));
        printf("red=0x%X\n",c.colorArgb.red);
        printf("green=0x%X blue=0x%X\n",c.colorArgb.green,c.colorArgb.blue);
        return 0;
}

运行结果:

2    8

red=0x1234

green=0xED2B blue=0xFFFE


本文出自 “帆布鞋也能走猫步” 博客,请务必保留此出处http://9409270.blog.51cto.com/9399270/1864052

以上是关于结构体和双链表 struct myStruct int ID; int TYPE; char NAME[20]; ;的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法——双链表预习

c++学习笔记_c++实现双链表

Go的Struct结构体和(Json Form tag)

Go语言结构体和方法

结构体和共用体

MATLAB:获取向量结构的最小 x 值