以下是通用链表的代码。代码无效。无法弄清楚出了什么问题。不产生编译错误但不产生输出。
#include<iostream>
#include<stdlib.h>
using namespace std;
struct Node{
void* data;
Node* next;
};
void Insert(Node** head,void* k,size_t data_size){
Node* temp=(Node*)malloc(sizeof(Node));
temp->data=malloc(data_size);
temp->next=*head;
for(int i=0;i<data_size;i++){
*((char*)(temp->data) + i) = *((char*)(k )+ i);
}
*head=temp;
}
void PrintList(Node* head,void (*fptr)(void*)){
Node* temp=head;
while(temp!=NULL){
(*fptr)(temp->data);
temp=temp->next;
}
}
void PrintInteger(void* k){
printf("%d",*(int*)(k));
}
void PrintFloat(void* k){
printf("%f",*(float*)k);
}
int main(){
int a[]={4,1,9,5};
float b[]={1.3,7.6,2.5,4.7};
Node*head=NULL;
unsigned int_size=sizeof(int);
unsigned float_size=sizeof(float);
for(int i=3;i>=0;i++){
Insert(&head,&a[i],int_size);
}
PrintList(head,PrintInteger);
cout<<endl;
Node* head2=NULL;
for(int i=3;i>=0;i++){
Insert(&head2,&b[i],float_size);
}
PrintList(head2,PrintFloat);
}
答案 0 :(得分:1)
for(int i=3;i>=0;i++){
Insert(&head,&a[i],int_size);
}
for循环中存在内存错误,请使用&#34; i - &#34;而不是&#34; i ++&#34;