链表

本文详细介绍了单链表与双链表的基本概念、节点类型定义及各种核心操作实现,包括创建、查找、插入和删除等,并提供了具体的C语言代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//单链表中节点类型的描述
typedef struct{
	ElemType data;
	struct LNode *next;
}LNode,*LinkList;

//头插法建立单链表
LinkList CreatList1(LinkList &L){
	int x;
	LNode *s;
	L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;						//初始为空链表 
	scanf("%d",&x);
	while(x!=9999){
		s=(LNode*)malloc(sizeof(LNode));
		s->data=x;
		s->next=L->next;
		L->next=s;
		scanf("%d",&x);
	}
	return L;
} 

//尾插法建立单链表
LinkList CreatList(LinkList &L){
	int x;
	L=(LinkList)malloc(sizeof(LNode));
	LNode *s,*r=L;						//r为表尾指针 
	scanf("%d",&x);
	while(x!=9999){
		s=(LNode*)malloc(sizeof(LNode));
		s->data=x;
		r->next=s;
		r=s;							//r=r->next;
		scanf("%d",&x);
	}
	r->next=NULL;
	return L;
}

//按序号查找结点值 
LNode *GetElem(LinkList L,int i){
	LNode *s=L->next;				//头结点指针赋给s 
	if(i==0)
		return L;
	if(i<0||i>L.length)
		return NUll;				//i无效,返回NULL 
	while(s&&j<i){
		s=s->next;
		j++;
	}
//	for(int j=1;j<i;j++)
//		s=s->next;
	return s;
}

//按值查找表结点 
LNode *LocateElem(LinkList L,ElemType e){
	LNode *s=L->next;
	while(s!=NULL&&s->data!=e)
		s=s->next;
	return s;
}

//插入结点操作
//将值为x的新结点 *s插入到单链表第i个位置
p=GetElem(L,i-1);
s->next=p->next;
p->next=s;

//将 *s插入到*p前边
s->next=p->next;
p->next=s;
temp=s->data;
s->data=p->data;
p->data=temp;
 
//删除结点操作
//删除第i个结点
p=GetElemtype(L,i-1);
q=p->next;
p->next=q->next;
free(q);

//删除结点*p 
q=p->next;
p->data=p->next->data;
p->next=q->next;
free(q);

//双链表中结点类型的描述
typedef struct DNode{
	ElemType data;
	struct DNode *prior,*next;
}DNode,*DLinkList; 

//双链表插入结点操作(在p之后插入结点*s) 
p->next->prior=s;
s->next=p->next;
p->next=s;
s->prior=p;

//双链表删除结点操作(删除结点*p的后续结点*q) 
q->next->prior=p;
p->next=q->next;
free(q);

//静态链表结构类型的描述
#define MaxSize 50
typedef struct{
	ElemType data[MaxSize];
	int next
}SLinkList[MaxSize];

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值