0
点赞
收藏
分享

微信扫一扫

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

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

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",
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 条评论