#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");
}//=====================================================
单链表
最新推荐文章于 2023-05-06 22:43:40 发布