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

动态链表的基本操作

#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;
}

输出效果

全部评论

相关推荐

拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
河和静子:如果大专也能好过的话,我寒窗苦读几年的书不是白读了?
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务