链表的基本操作

#include<stdio.h>
#include<malloc.h>
typedef int ElemType;
typedef struct LNode{
     ElemType data;
struct LNode *next;
}LNode,*LinkList;
LinkList L;
LNode *p;


void CreateList_F(int n){
int i;
L=(LNode*)malloc(sizeof(LNode));


L->next=NULL;
printf("逆位序输入元素的个数:\n");
scanf("%d",&n);
for(i=n;i>0;--i){
p=(LNode*)malloc(sizeof(LNode));

scanf("%d",&p->data);
p->next=L->next;L->next=p;
}
p=L->next;
 
 while(p!= NULL)
 {
  printf("%3d",p->data);
  p = p->next;
 }
 printf("输出完毕\n");

}
void LocateElem_L(ElemType e){
int i,j=0;
    p=L->next;
printf("请输入要查找元素的值\n");
scanf("%d",&e);
while(p&&p->data!=e){
p=p->next;
j++;
}


if(p==NULL)
printf("查找失败!\n");
else
printf("找到,下标为%d\n",j);
p=L->next;


while(p!=NULL)
 {
  printf("%3d",p->data);
  p = p->next;
 }
 printf("输出完毕\n");

}
void ListInsert_L(int i,ElemType e){
LNode *s;
int j=0;
printf("请输入元素值与其要插到到第几个位置之前\n");
scanf("%d%d",&e,&i);
p=L;
while(p&&j<i-1){
p=p->next;
++j;
}
if(!p||j>i-1)
printf("ERROR\n");
s=(LNode*)malloc(sizeof(LNode));
s->data=e;
s->next=p->next;
p->next=s;
printf("插入成功!\n");
p=L->next;
while(p!=NULL)
 {
  printf("%3d",p->data);
  p = p->next;
 }
 printf("输出完毕\n");


 

}
void ListDelete_L(int i,ElemType e){
int j=0;
LNode *q;
p=L;
printf("请输入要删除的元素值的位置\n");
scanf("%d",&i);
while(p->next&&j<i-1){
p=p->next;
++j;
}
if(!(p->next)||j>i-1)
printf("ERROR\n");
q=p->next;
p->next=q->next;
e=q->data;

printf("删除成功!\n");
printf("删除后链表为结果为\n");
p=L->next;
free(q);
while(p!=NULL)
 {
  printf("%3d",p->data);
  p=p->next;
 }
 printf("输出完毕\n");
}
void main(){
int n,e,i,j;
CreateList_F(n);


printf("建立链表成功!\n");
    LocateElem_L(e);
printf("查找操作完毕!\n");
ListInsert_L(i,e);
printf("插入操作完毕!\n");
ListDelete_L(i,e);
printf("  删除操作完毕!\n");
free(p);









}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值