0
点赞
收藏
分享

微信扫一扫

考研数据结构——单链表操作(模板)

女侠展昭 2022-03-26 阅读 66

1、创建链表

2、查找(按位置、按节点值)

3、插入(按顺序、按位置)

4、删除(按位置、按结点值)

#include<bits/stdc++.h>

typedef struct node{
	int data;
	struct node * next;
}NODE;
//创建 
void create(){
	NODE *h,*s,*p;
	h=(NODE*)malloc(sizeof(NODE));
	p=h;
	int x;
	int cycle=1;//标记作用,判断是否终止输入 
	while(cycle){
		printf("请输入一个数: \n");
		scanf("%d",&x);
		 if(x){
		 	s=(NODE*)malloc(sizeof(NODE));
		 	s->data=x;
		 	s->next=p->next;
		 	p->next=s;
		 	p=s;
		 }else{
		 	cycle=0;
		 }
	}
}
//按位置查找
NODE * search_position(NODE * head,int i){
	NODE *p=head;
	int k=0;//用来标识位置
	//如果当前没有到第i个位置并且后面还有节点,那就继续找 
	while(k<i&&p->next!=NULL){//用人话讲:没找到且没找完 
		p=p->next;k++;
	} 
	if(k==i) return p;
	else return NULL;
} 
//按节点值查找 
NODE * search_value(NODE * head,int x){
	NODE *p=head;
	while(p->next&&p->next->data!=x){
		p=p->next;
	}
	if(p->next) return p;
	else return NULL;
} 
//按顺序插入
void insert_order(NODE * head,int x){
	NODE *p,*q;
	p=head;
	while(p->next&&p->next->data<x){
		p=p->next;
	}
	q=(NODE*)malloc(sizeof(NODE));
	q->data=x;
	q->next=p->next;
	p->next=q;
} 
//按位置插入 
void insert_position(NODE * head,int i,int x){
	NODE * p,*q;
	p=head;
	int k=0;
	while(i<k&&p->next){
		p=p->next;
		k++;
	}
	if(i==k){
		q=(NODE*)malloc(sizeof(NODE));
		q->data=x;
		q->next=p->next;
		p->next=q;
	}else{
		printf("插入失败"); 
	}
}
//按位置删除
void del_position(NODE*head,int i){
	NODE *p,*q;
	p=head;
	int k=0;
	while(p->next&&i<k){
		p=p->next;
		k++;
	}
	if(i==k){
		q=p->next;
		p->next=q->next;
		free(q);
	}else{
		printf("删除失败");
	}
}
//按节点值删除
void del_value(NODE *head,int x){
	NODE *p,*q;p=head;
	while(p->next&&p->next->data!=x){
		p=p->next;
	}
	if(p->next){
		q=p->next;
		p->next=q->next;
		free(q);
	}else{
		printf("删除失败");
	}
} 

int main(){
	return 0;
} 
举报

相关推荐

0 条评论