#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int member;
struct node *link;
}student;
student *create(int n)
{
student *p,*h,*s;
int i;
if ((h = (student *) malloc(sizeof(student))) == NULL)
{
printf("不能分配内存空间!\n");
exit(0);
}
h->member = 0;
h->link = NULL;
p = h;
printf("请输入%d个人的年龄:\n",n);
for ( i = 0; i < n; i++)
{
if((s = (student *)malloc (sizeof(student))) == NULL)
{
printf("不能分配内存空间!\n");
exit(0);
}
p->link = s;
scanf("%d",&s->member);
p = s;
p->link = NULL;
}
p->link = NULL;
return h;
}
student *add(student *h,int i,int result)
{
student *p,*s;
p = h;
int j = 0;
while((j++ < i) && (p = p->link));
if(!p || j <= i)
{
return 0;
}
s = (student *)malloc (sizeof(student));
s->member = result;
s->link = p->link;
p->link = s;
}
student *del(student *h,int i)
{
student *p,*s;
p = h;
int j = 0;
i--;
while((j++ < i) && (p = p->link));
if(!p || j <= i)
{
return 0;
}
p->link = p->link->link;
}
int main(void)
{
student *head;
student *p;
int num = 0;
printf("请输入链表的节点数目:\n");
scanf("%d",&num);
head = create (num);
p = head;
add(p,2,1000); //在节点2处增加一个值为1000的节点。
del(p,3); //删除节点3
while(p->link)
{
printf("%d ",p->link->member);
p = p->link;
}
return 0;
}
#include <stdlib.h>
typedef struct node
{
int member;
struct node *link;
}student;
student *create(int n)
{
student *p,*h,*s;
int i;
if ((h = (student *) malloc(sizeof(student))) == NULL)
{
printf("不能分配内存空间!\n");
exit(0);
}
h->member = 0;
h->link = NULL;
p = h;
printf("请输入%d个人的年龄:\n",n);
for ( i = 0; i < n; i++)
{
if((s = (student *)malloc (sizeof(student))) == NULL)
{
printf("不能分配内存空间!\n");
exit(0);
}
p->link = s;
scanf("%d",&s->member);
p = s;
p->link = NULL;
}
p->link = NULL;
return h;
}
student *add(student *h,int i,int result)
{
student *p,*s;
p = h;
int j = 0;
while((j++ < i) && (p = p->link));
if(!p || j <= i)
{
return 0;
}
s = (student *)malloc (sizeof(student));
s->member = result;
s->link = p->link;
p->link = s;
}
student *del(student *h,int i)
{
student *p,*s;
p = h;
int j = 0;
i--;
while((j++ < i) && (p = p->link));
if(!p || j <= i)
{
return 0;
}
p->link = p->link->link;
}
int main(void)
{
student *head;
student *p;
int num = 0;
printf("请输入链表的节点数目:\n");
scanf("%d",&num);
head = create (num);
p = head;
add(p,2,1000); //在节点2处增加一个值为1000的节点。
del(p,3); //删除节点3
while(p->link)
{
printf("%d ",p->link->member);
p = p->link;
}
return 0;
}