C语言链表完整实现(带头节点)

#include <stdio.h>
#include <stdlib.h>
#define ElementType int
typedef struct LNode *PtrToNode;
struct LNode {
	ElementType Data;
	PtrToNode Next;
};

typedef PtrToNode List;

void InitList(List &PtrL){
	PtrL = (List)malloc(sizeof(struct LNode));
	PtrL->Next=NULL;
	return;
}
bool Insert(ElementType X, int i,List PtrL){
	List Tmp,Pre=PtrL;
	int j = 1;
	while(j<i&&Pre){
		j++;
		Pre = Pre->Next;
	}
	if(Pre==NULL){
		printf("插入位置不合理\n");
		return false;
	}else{
		Tmp = (List)malloc(sizeof(struct LNode));
		Tmp->Data =X;
		Tmp->Next = Pre->Next;
		Pre->Next=Tmp;
		return true;
	}
}
bool Delete(int i, List &PtrL){
	List Tmp,Pre=PtrL;
	int j = 1;
	while(j<i&&Pre){
		j++;
		Pre = Pre->Next;
	}
	if(Pre==NULL||Pre->Next==NULL){
		printf("插入位置不合理\n");
		return false;
	}else{
		Tmp = Pre->Next;
		Pre->Next = Tmp->Next;
		free(Tmp);
		return true;
	}
}
void printL(List PtrL){
	List TmpList = PtrL->Next;
	while(TmpList){
		printf("%d\n",TmpList->Data);
		TmpList = TmpList->Next;
	}
}
int main(){
	List PtrL;
	InitList(PtrL);
	for(int i = 1;i<10;i++)
		Insert(i,i,PtrL); 
	printL(PtrL);
	for (int i = 12;i>5;i--)
		Delete(i,PtrL);
	printL(PtrL);
}

  

转载于:https://www.cnblogs.com/zangkuo/p/6142397.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值