线性表_链式存储

线性表_链式存储

及相关操作

#include<iostream>
#include<cstdlib>
using namespace std;

typedef struct LNode{
	int date;
	struct LNode *Next;
}List;
List *PtrL;
struct LNode L;

//	1;求表长
int Length(List *PtrL)
{
	List *P=PtrL;
	int j=0;
	while(P!=NULL)
	{
		j++;
		P=P->Next;	
	}	
	return j;
} 

//	2:查找
//  (1) 按序号查找
List*  FindKth(int K,List* PtrL)
{
	int i=1;
	List *P=PtrL;
	while(P!=NULL && i<K){
		i++;
		P=P->Next;
	}
	if(i==K)	return P; //找到第K个返回指向第K个的指针 
	else return NULL;
}

//  (2) 按值查找
List* Find(int X,List* PtrL)
{
	List* P=PtrL;
	while(P!=NULL || P->date!=X)
	{
		P=P->Next;
	}
	if(P->date==X)	return P; // 这俩行实际 
	else return NULL;		  // 只用returnP就ok 
} 

//	3:插入 {在第i-1(1<=i<=n+1)个结点后插入一个值为X的新结点
List* Insert(int X,int i,List* PtrL)
{
	List *P;
	List *S;
	if(i==1)  /* 新结点在表头*/
	{
		S=(List*)malloc(sizeof(List));
		S->Next=PtrL;
		S->date=X;
		return S; 
	}
	//	找到第i-1个位置并用P标记
	P=FindKth(i-1,PtrL);  /* 法一 */
	//	找到第i-1个位置并用P标记 /* 法二 */
	int j=0;
	P=PtrL;
	while(P!=NULL || j<i-1)
	{
		j++;
		P=P->Next;
	}
	if(P==NULL)
	{
		cout<<"参数i错误";
		return NULL;	
	} 
	else
	{
		S=(List*)malloc(sizeof(List));
		S->date=X;
		S->Next=P->Next;
		P->Next=S;
		return PtrL;
	}
} 

//  4:删除(删除第i个位置的结点
List *del(int i,List *PtrL)
{
	List *P=NULL;
	List *S=NULL;
	List *head=PtrL;
	if(i==1)
	{
		S=PtrL;
		if(PtrL!=NULL)	PtrL=PtrL->Next;
		else return NULL;
		free(S);
		return PtrL;
	}
	int j=1;
	for(P=head;j<i-1;j++)
	{
		P=P->Next;
	}
	S=P->Next;
	P->Next=S->Next;
	free(S);
	return head;		
} 

int main()
{
	
	return 0;	
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线性表链式存储结构是使用链式方式将线性表中的元素存储起来。链表可以分为单链表、循环链表和双链表。在单链表中,每个结点都包含指向下一个结点的指针。循环链表是在单链表的基础上,将最后一个结点的指针指向头结点,形成一个循环。而双链表则是在单链表的基础上,每个结点都包含指向前一个结点和后一个结点的指针链表的存储单元可以是连续的,也可以是非连续的,甚至是零散分布在内存的任何位置上。因此,链表中结点的逻辑顺序和物理顺序不一定相同。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [数据结构——线性表链式存储](https://blog.csdn.net/weixin_46272350/article/details/119612209)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [线性表链式存储结构..](https://download.csdn.net/download/N201871643/86035198)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值