单链表的基本认识

单链表是一种线性表的数据结构,其中每个元素(节点)包含数据和指向下一个元素的指针;

单链表结构示意图
头节点—>元素1—>...元素n—>尾节点

特点:1.不要求大片连续的存储空间,即逻辑上连续,物理(存储空间)上可以不连续;                               2.改变容量方便;                                                                                                                               3.插入与删除方便;                                                                                                                           4.不能随机访问,如果想要访问只能进行遍历;                                                                                 5.有头节点与尾节点,一般指向NULL;

定义:由一个记录元素值的整数型变量data和一个指针构成,以下简记为:链表名(元素—>);

输入:提供一个要进行输入的单链表和一个记录长度的整数型变量n,接着循环n次依次输入,        输入前:L(头节点)(NULL—>)。。。。。                        需输入的:s(x—>)                                    输入:L—>x—>。。。。。                      代码即:s.data=x;    s—>next=L—>next;   L—>next=s;

按位查找:提供一个要进行输入的单链表和查找的位数element,健壮性判断:如果要查的位数小   于0,返回无;                                                                                                                                   循环element次,另一循环条件为L(保证L不为空),每次循环让L等于L的下一位(L=L—>next);

插入:与输入的原理相似 ;先找到要插入的那一位p,然后定q为p的下一位;element为要插入的元   素;插入前:—>p—>q—>。。。                          要插入的:s(element—>)                                   插入:p—>next=s;   s—>next=q;

按值查找与按位查找原理一样;

#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct LNode{
	ElemType data;
	struct LNode *next;
}LNode,*linklist/*链表*/;
void List_head_insert(linklist &L,int n){//输入 
	L=(linklist)malloc/*开辟一片内存空间*/(sizeof(LNode));
	L->next=NULL;
	ElemType x;
	LNode *s;
	for(int i=1;i<=n;i++){
		cin>>x;
		s=(linklist)malloc(sizeof(LNode));
		s->data=x;
		s->next=L->next;
		L->next=s;
	}
} 
linklist GetElem(linklist L,int element){//按位查找 
	if(element<0)return NULL;
	int j=0;
    while (L&&j<element){
		L=L->next;
		j++;
	}
	return L;	
}
bool Listinsert(linklist L,int i,ElemType element){//插入
	linklist p=GetElem(L,i-1);
	if(p==NULL)return false;
	linklist q=(linklist)malloc(sizeof(LNode));
	p->next=q->next;
	p->next=q;
	q->data=element;
	return true;
}
void cout_list(linklist L){//输出
	L=L->next;
	while (L!=NULL){
		cout<<L->data<<"  ";
		L=L->next;
	}
}
linklist LocateElem(linklist L,ElemType element){//按值查找 
	while(L){
		if(L->data==element)
		return L;
		L=L->next;
	}
	return NULL;
}
int main(){
	
} 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值