数据结构-----线性表>链表的代码实现

#软件工程1604谷子毅
#2017-11-26 21:30

#武汉工程大学邮电与信息工程学院邮科院校区

提示:如果文中链接失效或有疑惑,请留言,我会在看到的第一时间帮助解决,谢谢支持!


typedef struct LNode *PtrToLNode;
struct LNode{
	ElementType Data;
	PtrToLNode Next;
};
typedef PtrToLNode Position;
typedef PtrToLNode List;
/*查找*/
#define ERROR NULL
Position Find(List L,ElementType X){
	Position p=L;/*p指向L的第1个结点*/
	
	while(p&&p->Data!=X)
		p=p->next;
		
	/*下列语句可以用 return p;替换*/
	if(p) 
		return p;
	else 
		return ERROR;
}
/*带头结点的插入*/
/*注意:在插入位置参数P上与课程有所不同,课程
中i是序列位序(从1开始),这里P是链表结点指针
,在P之前插入新结点 */
bool Insert(List L,ElementType X,Position P){
	/*这里默认L有头结点*/
	Position tmp,pre;
	
	/*查找P的前一个结点*/
	for(pre=L;pre&&pre->Next!=P;pre=pre->Next);
	if(pre==NULL){/*P所指的结点不在L中*/
		printf("插入位置参数错误\n");
		return false;
	}
	else{/*找到了P的前一个结点pre*/
		/*在P前插入新结点*/
			tmp=(Position)malloc(sizeof(struct LNode));/*申请、填装结点*/
			tmp->data=X;
			tmp->Next=P;
			pre->Next=tmp;
			return true;
	}	
}
/*带头结点的删除*/
/*注意:在删除位置参数P上与课程有所不同,
课程中i是序列位序(从1开始),这里P是拟
删除结点指针*/
bool Delete(List L,Position P){
	/*这里默认L有头结点*/
    Position tmp, pre;
    
    /*查找P的前一个结点*/  
	for(pre=L;pre&&pre->Next!=P;pre=pre->Next);
	if(pre==NULL||P==NULL){/* P所指的结点不在L中 */
		printf("删除位置参数错误\n");
		return false;
	}
	else{/*找到了P的前一个结点pre*/
		 /*将P位置的结点删除*/
		 pre->Next=P->Next;
		 free(P);
		 return true;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值