【数据结构】 动态链表的基本操作

动态链表的基本操作

#include<iostream>
using namespace std;
struct node{
	int data;
	node* next;
};
//创建链表
node *create(int Array[],int n){
	node *p, *pre, *head;
	head=new node;
	head->next=NULL;
	pre=head;
	for(int i=0;i<n;i++){
		p=new node;
		p->data=Array[i];
		p->next=NULL;
		pre->next=p;
		pre=p;
	}
	return head;
}
//查找元素
//在以head为头结点的链表上计数元素x的个数
int search(node* head,int x){
	int count =0;
	node *p=head->next;
	while(p!=NULL){
		if(p->data==x){
			count++;
		}
		p=p->next;
	}
	return count;
}
//插入元素
//将x插入以head为头结点的链表的第pos个位置上
void insert(node* head,int pos, int x){
	node* p=head;
	for(int i=0;i<pos-1;i++){
		p=p->next;
	}
	node* q=new node;
	q->data=x;
	q->next=p->next;
	p->next=q;
}
//删除元素
//删除以head为头结点的链表中所有数据域为x的节点
void del(node* head,int x){
	node* p=head->next;
	node*pre=head;
	while(p!=NULL){
		if(p->data==x){
			pre->next=p->next;
			delete(p);
			p=pre->next;
		}else{
			pre=p;
			p=p->next;
		}
	}
}
//打印链表
void print(node* head){
	node* p=head->next;
	while(p!=NULL){
		cout<<p->data<<" ";
		p=p->next;
	}
}
int main(){
	int Array[5]={5,3,6,1,2};
	node* L=create(Array,5);
	print(L);
	cout<<endl;
	cout<<search(L,6);
	cout<<endl;
	insert(L,3,2);
	print(L);
	cout<<endl;
	del(L,2);
	print(L);
	cout<<endl;
	return 0;
}

输出效果

在这里插入图片描述

发布了51 篇原创文章 · 获赞 4 · 访问量 4221

猜你喜欢

转载自blog.csdn.net/qq_43207916/article/details/102668210
今日推荐