GetElem-LinkList

本文介绍了一种从单链表中获取指定位置元素值的方法,并提供了详细的算法实现过程。通过遍历链表直至找到目标节点,进而返回该节点的数据。

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

转自——小甲鱼“数据结构与算法”

/*初始条件:单链表L已经存在,1<=i<=ListLength(L)*/
/*操作结果:用e返回L中第i个数据元素的值*/

Status GetElem(LinkList *L, int i, ElemType *e)
{
    int j;
	LinkList p;
	
	p=L->next;
	j=1;
	
	while(p&&j<1)
	{
	    p=p->next;
		++j;
	}
	
	if(!p||j>i)
	{
	    return ERROR;
	}
	
	e=p->data;
	
	return OK;
}


#include<stdio.h> #include<malloc.h> #define ERROR 0 #define OK 1 typedef int ElemType; /*定义表元素的类型*/ typedef struct LNode{ /*线性表的单链表存储*/ ElemType data; struct LNode *next; }LNode,*LinkList; LinkList CreateList(int n); /* 初始化带头结点的空链表,并通过尾插法动态构建链表结构 */ void PrintList(LinkList L); /*输出带头结点单链表的所有元素*/ int GetElem(LinkList L,int i,ElemType *e); /* 获取链表中指定位置的元素值 */ LinkList CreateList(int n){ LNode *p,*q,*head; int i; head=(LinkList)malloc(sizeof(LNode)); head->next=NULL; p=head; for(i=0;i<n;i++){ q=(LinkList)malloc(sizeof(LNode)); printf("input data %i:",i+1); scanf("%d",&q->data); /*输入元素值*/ q->next=NULL; /*结点指针域置空*/ p->next=q; /*新结点连在表末尾*/ p=q; } return head; }/*CreateList*/ void PrintList(LinkList L){ LNode *p; p=L->next; /*p指向单链表的第1个元素*/ while(p!=NULL){ printf("%5d",p->data); p=p->next; } }/*PrintList*/ int GetElem(LinkList L,int i,ElemType *e){ LNode *p;int j=1; p=L->next; while(p&&j<i){ p=p->next;j++; } if(!p||j>i) return ERROR; *e=p->data; return OK; }/*GetElem*/ int main(){ int n,i;ElemType e; LinkList L=NULL; /*定义指向单链表的指针*/ printf("please input n:"); /*输入单链表的元素个数*/ scanf("%d",&n); if(n>0){ printf("\n1-Create LinkList:\n"); L=CreateList(n); printf("\n2-Print LinkList:\n"); PrintList(L); printf("\n3-GetElem from LinkList:\n"); printf("input i="); scanf("%d",&i); if(GetElem(L,i,&e)) printf("No%i is %d",i,e); else printf("not exists"); }else printf("ERROR"); return 0; } 运行结果
最新发布
06-12
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值