C单链表

#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);
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值