线性表之链表存储代码

include <stdio.h>

define ElementType int

typedef struct Node{
ElementType Date;
struct Node *Next;
}List;

List l, *Ptrl;

//求表长
int length(List *Ptrl)
{
List *p = Ptrl;
int j = 0;
while(p)
{
p = p -> Next;
j++;
}
return j;
}
//只能序号查找
List *FindKth(int k, List *Ptrl)
{
List *p = Ptrl;
int i = 1;
while(p != NULL && i< k)
{
p = p -> Next;
i++;
}
if(i == k)
return p;
else
return NULL;
}

//按值查找

List Find(ElementType x, List *Ptrl)
{
List *p = Ptrl;
while(p != NULL && p -> Date != x)
p = p -> Next;
return p;
}

//链表插入
List *Insert(ElementType x, int i, List *Ptrl)
{
List *p, *s;
if(i == 1)
{
s = (List *)malloc(sizeof(List));
s -> Date = x;
s -> Next = Ptrl;
return s;
}
p = FindKth(i-1, Ptrl);
if(p == NULL)
{
return NULL;
}
else
{
s = (List *)malloc(sizeof(List));
s -> Date = x;
s -> Next = p -> Next;
p -> Next = s;
return Ptrl;
}
}

//链表删除
List *Delete(int i, List *Ptrl)
{
List *p, *s;
if(i == 1)
{
s = Ptrl;
if(Ptrl != NULL)
Ptrl = Ptrl -> Next;
else
return NULL
free(s);
return Ptrl;
}
p = FindKth(i-1, Ptrl);
if(p == NULL)
{
//第n-1个几点不存在
return NULL;
}
else if(p -> Next == NULL)
{
//第n个几点不存在
return NULL;
}
else
{
s = p -> Next;
p -> Next = s -> Next;
free(s)
return Ptrl;
}
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,045评论 0 2
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,487评论 0 13
  • 月是故乡明,人是故乡亲,离开故乡,到哪的节都仿佛不是节,元宵节也是如此。 故乡的元宵节,大抵从正月初十就开始热闹起...
    三千晚风阅读 1,060评论 1 6
  • 金牛派阅读 157评论 0 0
  • 姓名:潘亚平 公司:福建起步儿童用品有限公司 日精进打卡第11天 【知~学习】 《六项精进》3遍共25遍 《大学》...
    徒手敬岁月_114e阅读 99评论 0 0