单链表

 #include<stdio.h>
#include<stdlib.h>
//-------------------------------------------
typedef struct Lnode{
 int date;
 struct Lnode * next;
}Lnode,*L;
//-----------------------------------------------建立数据链表
void listinsert(Lnode *L,int m,int n);
int listDelete(Lnode *L,int n);
void ListPrint(Lnode *L);
//------------------------------------------------插入删除函数的申明
int main(){
 Lnode *L=(Lnode *)malloc(sizeof(Lnode));
 L->next=NULL;
 int i,tmp;
 int m,n;
 char ch='Y';
 printf("请输入数据(当输入100时退出):/n");
 scanf("%d",&tmp);
 for(i=0;i<20&&tmp!=100;i++){
     Lnode *p=(Lnode *)malloc(sizeof(Lnode));
  p->date=tmp;
  p->next=L->next;L->next=p;
  scanf("%d",&tmp);
 }
 ListPrint(L);
 while(1){
            printf("请输入你要插入的数据:");
            scanf("%d",&m);
         printf("请输入你要插入的位置:");
            scanf("%d",&n);
         listinsert(L,m,n);
         printf("是否插入数据,不插入输入‘N’:");
         getchar();
            scanf("%c",&ch);
            if(ch=='N') break;
     }
 ch='Y';
 while(1){
    printf("请输入你要删除的数据:");
 scanf("%d",&n);
 listDelete(L,n);
 printf("是否继续插入数据,不插入输入‘N’:");
 getchar();
 ch=getchar();
 if(ch=='N')break;
 }
 return 1;
}
//----------------------------------------------------主函数实行操作
void listinsert(Lnode *L,int m,int n)
{
 Lnode *p;
 p=L->next;
 int i=0;
 Lnode *ptr=(Lnode *)malloc(sizeof(Lnode));
 ptr->date =m;
 for(;p&&i<n-1;p=p->next,i++);
 if(!p){
    printf("插入位置错误!/n");
    return;
       }
    else{
    ptr->next=p->next ;
    p->next =ptr;
 printf("插入后数据为:");
    ListPrint(L);
    }
}
//-------------------------------------------------------插入函数,实现对数据的按从小到大的插入
int listDelete(Lnode *L,int n)
{
 Lnode *p;
 p=L;
 for(;p->next && p->next->date!=n;p=p->next);
 if(p->next==NULL){
  printf("无数据%d/n",n);
  return 0;
 }
 else{
     Lnode *ptr=(Lnode *)malloc(sizeof(Lnode));
  ptr=p->next;
  p->next=ptr->next;
  free(ptr);
  printf("已删除数据%d/n",n);
  ListPrint(L);
  return 1;
 }
}//-----------------------------------------------------------删除数据函数,实现删除已有的数据
void ListPrint(Lnode *L){
    Lnode *p;
    p=L->next;
    for(;p;p=p->next){
        printf("%d  ",p->date);
    }
    printf("/n");
}//=====================================================

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值