c语言异质链表,用c语言实现异质链表.pdf

用c语言实现异质链表

#include

#include

#include

#include

#include

typedef struct node *PNode;

typedef struct node

{

void *point;

int typeid;//数据类型标示。便于测试,我们设定 1 是 int,2 是 char

PNode next;

}Node;

Node *Createlist()

{

int val1, i, n,type;

char val2[20];

PNode head,p,q;

head = NULL;

printf("Please input the size of the list:\n");

scanf("%d", &n);

for (i=0;i

{

scanf("%d",&type);

p = (PNode)malloc(sizeof(Node));

switch(type)

{

case 1:{scanf("%d\n",&val1);p->point = (int*)val1;};break;

case 2:{scanf("%c\n",&val2);p->point = (char*)val2;};break;

}

p->next = NULL;

if (head == NULL)

q = head = p;

else{

q->next = p;

q = p;

}

return head;

}

}

void Print_List(Node *head)

{

PNode p;

p = head;

while (p!=NULL)

{

switch (p->typeid)

{

case 1:printf("%d ",(int*)(p->point));break;

case 2:printf("%d ",(char*)(p->point));break;

}

p = p->next;

}

}

int Insert(Node *head, int pos, const void *a, const int type)

{

PNode p,q;

int i;

p = head;

i = 0;

while (p!=NULL && i

{

p = p->next;

i++;

}

if (p==NULL || i>pos-1 ) return -1;

q = (PNode)malloc(sizeof(PNode));

if (q!=NULL)

{

q->point = (int*)a;

q->next = p->next;

q->typeid = type;

p->next = q;

return 1;

}

return -1;

}

int Delete(Node *head, int pos)

{

PNode p,q;

int i;

p = head;

i = 0;

while (p!=NULL && i

{

p = p->next;

i++;

}

if (p->next==NULL || i>pos-1)

return -1;

q = p->next;

p->next = q->next;

free(q);

return 1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值