结构体和双链表 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. struct和union都是由多个不同的数据类型成员组成, 但在任何同一时刻, 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]; ;的主要内容,如果未能解决你的问题,请参考以下文章