#include"link.h"
Plink get_head()
{
Plink L =malloc(sizeof(Link));
if(L==NULL)
{
printf("申请失败\n");
return NULL;
}
L->len=0;
L->next=NULL;
return L;
}
void tail_insert(Plink L,stu e)
{
if(L==NULL)
{
printf("链表不存在\n");
return;
}
int i;
Plink t= L;
for(i=0;i<L->len;i++)
{
t=t->next;
}
Plink p=malloc(sizeof(Link));
p->data=e;
t->next=p;
p->next=NULL;
L->len++;
}
void output(Plink L)
{
if(L==NULL)
{
printf("链表不存在\n");
return;
}
int i;
Plink t=L;
for(i=0;i<L->len;i++)
{t=t->next;
printf("年龄:%d,成绩:%d,姓名:%s\n",t->data.age,t->data.score,t->data.name);
}
printf("\n");
}
void any_pos_del(Plink L,int pos)
{ if(L==NULL)
{
printf("链表不存在\n");
return;
}
Plink t=L;
int i;
for(i=0;i<pos-1;i++)
{
t=t->next;
}
Plink q=t->next;
t->next=q->next;
free(q);
q=NULL;
L->len--;
}
void reverse(Plink L)
{ if(L==NULL)
{
printf("链表不存在\n");
return;
}
Plink t;
t=L->next;
Plink q=t->next;
while(q!=NULL)
{
t->next=q->next;
q->next=L->next;
L->next=q;
q=t->next;
}
}
#include "link.h"
int main(int argc, const char *argv[])
{
Plink L=get_head();
stu st[4]={{20,80,"梨花"},{21,77,"苹果"},{17,99,"大华"}};
int i;
for(i=0;i<3;i++)
{
tail_insert(L,st[i]);
}
output(L);
any_pos_del(L,1);
output(L);
reverse(L);
output(L);
return 0;
}
#ifndef _LINK_H_
#define _LINK_H_
#include<myhead.h>
typedef struct stu
{
int age;
int score;
char name[20];
}stu;
typedef struct node
{
union
{
int len;
stu data;
};
struct node *next;
}Link,*Plink;
Plink get_head();
void tail_insert(Plink L,struct stu);
void output(Plink L);
void any_pos_del(Plink L,int pos);
void reverse(Plink L);
#endif