链表的创建,查找,插入和删除的基本操作

#include<stdio.h>
#include<stdlib.h>
typedef int Status;
typedef int Elemtype;
typedef struct LNode
{
Elemtype data;
struct LNode* next;
}LNode,linklist;
void CreateList( linklist L, int n)
{
L = (LNode)malloc(sizeof(LNode));
LNode
p;
(L)->next =NULL;
int i;
for ( i = 1; i <= n; i++) {
p = (linklist)malloc(sizeof(LNode));
scanf("%d",&(p->data));
p->next = (L)->next;
(L)->next = p;
}
}
void OutputLNode(LNode
L)
{
L = L->next;
while (L)
{
printf("%d", L->data);
L = L->next;
}
}
int GetElem(linklist L, int i, Elemtype e)
{
LNode
p;
int j = 1;
p = L->next;
while (p&&j<=i)
{
p = p->next;
++j;
}
if (!p || j > i)
return 0;
else
{
e = p->data;
return 1;
}
}
int InsertList(linklist
L, int i, Elemtype e)
{
LNode
p, * s;
int j = 0;
p = L;
while (p&&j<i-1)
{
p = p->next;
++j;
}
if (!p )
return 0;
else
{
s = (linklist)malloc(sizeof(LNode));
s->data = e;
s->next = p->next;
p->next = s;
return 1;
}
}
int DeleteList(linklist
L, int i, Elemtype
e)
{
LNode* p, * q;
int j = 0;
p = L;
while (p->next&&j<i-1)
{
p = p->next;
++j;
}
if (!(p->next) )
return 0;
else
{
q = p->next;
p->next = q->next;
e = q->data;
free(q);
return 1;
}
}
int main()
{
LNode
L;
CreateList(&L, 4);
/if(L->next==NULL){
printf("!");
}
/
printf(“表中元素:\n”);
OutputLNode(L);
Elemtype e;
GetElem(L, 2, &e);
printf(“将56插入第二个位置:\n”);
InsertList(&L, 2, 56);
OutputLNode(L);
printf(“删除第三个元素:\n”);
DeleteList(&L, 3, e);
OutputLNode(L);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值