C语言 多个链表可以共享相同的结构吗?



我为不同的链表有许多结构,都有不同的数据类型变量。喜欢:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
struct scorel {
int no;
struct scorel *rp;
};
struct namel{
char a[10];
struct scorel *rp;
struct namel *dp;
};
void main(){
int i,j,n,m;
struct namel *temp,*head,*end,**s;
struct scorel *tmp,*had,*nd;
clrscr();
printf("enter no of students");
scanf("%d",&n);
end=NULL;
for(i=0;i<n;i++){
temp=(struct namel*)malloc(sizeof(struct namel));
printf("enter namen");
scanf("%s",temp->a);
temp->rp=NULL;
temp->dp=NULL;
*(s+i)=temp;
if(end==NULL){
end=head=temp;
}
else {
end->dp=temp;
end=temp;
}
printf("enter no of scores");
scanf("%d",&m);
nd=NULL;
for(j=0;j<m;j++){
tmp=(struct scorel*)malloc(sizeof(struct scorel));
printf("enter scoren");
scanf("%d",&tmp->no);
tmp->rp=NULL;
if(nd==NULL){
nd=had=tmp;
temp->rp=tmp;
}
else {
nd->rp=tmp;
nd=tmp;
}
}
}
for(i=0;i<n;i++){
temp=*(s+i);
printf("%s-->",temp->a);
tmp=temp->rp;
while(tmp!=NULL){
printf("%d-->",tmp->no);
tmp=tmp->rp;
}
printf("n");
}
getch();
}

任何可用于我的,通过它我可以对不同的链表使用相同的结构。

我还看到了链表数组,

struct node{
int data;
struct node *next;
}*head[5];

但是在这种情况下,我们只能使用一种类型的变量。 我希望每个链表都有不同类型的变量。

您可以通过两种方式进行链表。

第一种方法是next字段与数据结构一起添加,然后您只能在一个列表中访问此结构

struct myData {
struct myData* next;
int a;
char b;
float c;
}

稍后,当您将项目添加到链表时,您只需找到最后一个项目并设置last->next = currentcurrent->next = NULL;


另一种可能性是分离数据和列表条目的结构

//Linked list structure
struct nodeEntry {
struct nodeEntry* next;
void* data;
};
struct myData {
int a;
char b;
float c;
};

现在,要将您的数据添加到链表,您需要执行以下操作:

nodeEntry* ent = malloc(*ent);
ent->data = pointerToMyData;
ent->next = NULL;
//Now find the last item in linked list and do:
last->next = ent;

在第二种情况下,链表中的每个项目都有自己的next对象,这允许您在多个链表中拥有单一的数据结构。

这种方法称为多链表

C/C++中的双链表与多链表

相关内容

  • 没有找到相关文章

最新更新