您的位置:首页 > 理论基础 > 数据结构算法

C单链表

2016-06-05 21:18 337 查看
#include<stdio.h>
#include<malloc.h>
typedef struct Student
{
int age;
char name[100];
struct Student* pNext;
}Node,*P;

P createList()  //创表
{
int n;//学生数量
int i=1;//计数
P pNew=NULL;
P pHead=NULL,pTail=NULL;

printf("请输入学生数量");
scanf("%d",&n);
for(i;i<=n;i++)
{
if(pHead==NULL)
{
pHead=(P)malloc(sizeof(Node));
pTail=pHead; //头指针和尾指针
}

printf("请输入第%d个学生姓名和年龄\n",i);
scanf("%s %d",&pTail->name,&pTail->age);

pNew=(P)malloc(sizeof(Node));
pNew->pNext=NULL;
pTail->pNext=pNew;
pTail=pNew;
}

return pHead;
}
void print(P pHead) //遍历
{
P pTemp=pHead;
printf("遍历结果");
do{

printf("%s %d\n",pTemp->name,pTemp->age);
pTemp=pTemp->pNext;
}while(pTemp->pNext!=NULL);

}
void insert(P pHead,int n)  //插表,n表示第几个节点
{
int i=1;
P pTemp=pHead;
P pNew=(P)malloc(sizeof(Node));
printf("输入插入到第%d位置的学生姓名和年龄\n",n);
scanf("%s %d",&pNew->name,&pNew->age);
for(i;i<=n-2;i++)
{
pTemp=pTemp->pNext;
}
pNew->pNext=pTemp->pNext;
pTemp->pNext=pNew;
printf("插入后遍历\n");
print(pHead);

}
void deleteNode(P pHead,int n)  //删第n个节点
{
int i=1;
P pTemp=pHead;
P pDel;
for(i;i<n-1;i++)
{
pTemp=pTemp->pNext;
}
pDel=pTemp->pNext;
pTemp->pNext=pDel->pNext;
free(pDel);
printf("删除后遍历\n");
print(pHead);

}
void main()
{
P pHead=createList();
print(pHead);
//insert(pHead,2);
deleteNode(pHead,3);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  链表 数据结构