欢迎来到天天文库
浏览记录
ID:43847020
大小:202.93 KB
页数:6页
时间:2019-10-15
《用c语言实现异质链表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、/***@brief用C语言实现异质链表*@date2014-10-12*/#include#includetypedefstructNode*PtrToNode;typedefPtrToNodelist;structNode{void*pData;inttype;//储存数据的类型,1-int,2-float,3-charPtrToNodenext;};/***@brief功能:创建一个新的链表*@paramvoid*@returnlist:链表的头*/listCreate(void){listL;L=(lis
2、t)malloc(sizeof(structNode));if(NULL==L){printf("Outofspace!");returnNULL;}L->next=NULL;returnL;}/***@brief功能:插入一个新的节点*@paramP:指向节点的指针type:输入的数据类型*@returnvoid*/voidInsert(listP,inttype){PtrToNodetemp;temp=(PtrToNode)malloc(sizeof(structNode));if(temp==NULL){printf("Outofspace!"
3、);return;}temp->type=type;switch(type){//根据不同的类型进行相应的输入操作case1:{temp->pData=malloc(sizeof(int));//为pData指针分配内存printf("int:");scanf("%d",temp->pData);break;}case2:{temp->pData=malloc(sizeof(float));printf("float:");scanf("%f",temp->pData);break;}case3:{temp->pData=malloc(sizeof(
4、char));printf("char:");scanf("%c",temp->pData);break;}default:{printf("Wrongtype!");break;}}temp->next=NULL;P->next=temp;}/***@brief功能:遍历输出链表*@paramL:指向链表头部的指针*@reurnvoid*/voidPrint(listL){L=L->next;if(L==NULL){//提示链表为空printf("ListisNULL!");return;}while(L!=NULL)//链表非空{swit
5、ch(L->type)//根据存储的数据类型进行相应输出操作{case1:{printf("%d",*(int*)(L->pData));break;}case2:{printf("%.2f",*(float*)(L->pData));break;}case3:{printf("%c",*(char*)(L->pData));break;}default:{break;}}L=L->next;}printf("");}/***@brief功能:链头节点删除*@paramL:指向链头的指针*@retutnvoid*/voidDeletehead(l
6、istL){PtrToNodetemp;if(L->next!=NULL){temp=L->next;L->next=temp->next;free(temp);//释放内存}}/***@brief功能:链表逆置*@paramL:指向链表头部的指针*@returnvoid*/voidInverse(listL){PtrToNodePrevious,Next,Head;Previous=NULL;Head=L;//保存链表头部L=L->next;if(L==NULL){return;}while(L->next!=NULL)//遍历链表将链表逆置{Ne
7、xt=L->next;L->next=Previous;Previous=L;L=Next;}L->next=Previous;Head->next=L;}/***@brief功能:删除链表*@paramL:指向链表头部的指针*@returnvoid*/voidRemove(listL){PtrToNodetemp,p;p=L->next;L->next=NULL;while(p!=NULL){temp=p->next;free(p);p=temp;}}/***@brief主函数,实现链表的创建、遍历输出、删除、逆置、销毁等功能*/intmain()
8、{inttype;//标记数据类型listL;PtrToNodeHead;L=Create();Head=L
此文档下载收益归作者所有