数据结构

单链表简单的基本操作

还有待完善,希望提出意见

//类型描述 
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define NULL 0
typedef int elemtp;
typedef struct node{
 elemtp data;
 struct node *next;
} linklist;
//新建单链表 
linklist *creatlist(){
 linklist *head,*p,*s;
 elemtp x;
 int i,j;
 head=(linklist *)malloc(sizeof(linklist));
 printf("输入单链表的长度:");
 scanf("%d",&x);
 p=head;
 printf("输入单链表的数值:");
 for(i=0;i<x;i++){
  s=(linklist *)malloc(sizeof(linklist));
  scanf("%d",&s->data);
  p->next=s;
  p=p->next; 
 }
 p->next=NULL;
 return head;
}
//向单链表中值为x的元素后插入值为Z的结点 
void insert(linklist *p,elemtp x,elemtp z){
 //在值为X的元素后插入值Z的结点 
 linklist *q,*s;
 q=p->next;
 while(q!=NULL){
  if(q->data==x){
   s=(linklist *)malloc(sizeof(linklist));
   s->data=z;
   s->next=q->next;
   q->next=s;
   break;
  }
  q=q->next;
 }
}
//删除单链表中值为d的结点 
void delet(linklist *p,elemtp d){
 linklist *q;
 q=p->next;
 while(q!=NULL){
  if(q->data==d){
   p->next=q->next;
   break;
  }
  q=q->next;
  p=p->next;
 }
}
//打印单链表 
void print(linklist *p){
 linklist *q;
 q=p->next;
 while(q!=NULL){
  printf("%d ",q->data);
  q=q->next;
 }
 printf("\n");
}
//主函数 
int main(){ 
 linklist *p,*q;
 elemtp x,z,d,n,m,o,v;
 p=creatlist();
 printf("输出单链表:"); 
 print(p);
 printf("输入元素和元素后插入的元素:");
 scanf("%d%d",&n,&m);
 printf("输出插入新的元素的单链表:");
 insert(p,n,m);
 print(p);
 printf("输入删除的元素:");
 scanf("%d",&o);
 printf("输出删除后的单链表:");
 delet(p,o);
 print(p);
}

结果:
在这里插入图片描述

知识点:

  • 1.对线性表的操作:增、删、改、查;
  • 2.判断线性表的结束------>NULL;
  • 3.conio函数的定义:在这里插入图片描述
  • 4.malloc函数的定义:
    在这里插入图片描述
  • 5.删除的示意图在这里插入图片描述
  • 4.插入的示意图
    (a)插入前 (b) 插入后

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值