数据结构(c语言版) 在线性表中删除一个节点的简单c程序,C语言数据结构-顺序线性表的实现-初始化、销毁、长度、查找、前驱、后继、插入、删除、显示操作...

1、数据结构-顺序线性表的实现-C语言

#define MAXSIZE 100

//结构体定义

typedef struct

{

int *elem; //基地址

int length; //结构体当前长度

int listsize; //结构体最大长度

} Sqlist; //结构体类型名

//各项操作

void Show_Help()

{

printf("1---初始化线性表\n");

printf("2---销毁线性表\n");

printf("3---清空线性表\n");

printf("4---判断线性表是否为空\n");

printf("5---求线性表长度\n");

printf("6---获取线性表某位置元素\n");

printf("7---请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0\n");

printf("8---求直接前驱\n");

printf("9---求直接后继\n");

printf("10---在线性表指定位置插入元素\n");

printf("11---删除线性表指定位置元素\n");

printf("12---显示线性表全部元素\n");

printf("13---翻转线性表全部元素\n");

printf("退出,输入一个负数\n");

}

//初始化线性表

void InitList(Sqlist* L)

{

L->elem = (int*) malloc(MAXSIZE*sizeof(int)); //给线性表分配初始空间

if(!(L->elem)){

printf("分配失败\n");

return ;

}

L->length = 0;

L->listsize = MAXSIZE;

}

//销毁线性表

void DestroyList(Sqlist* L)

{

if(L->elem)

free(L->elem); //销毁只需释放刚才给基地址分配的空间即可

L->length = 0;

}

//清空线性表

void ClearList(Sqlist* L)

{

L->length = 0;

}

//判断线性表是否为空

int ListEmpty(Sqlist L)

{

if(L.length)

return 0;

else

return 1;

}

//求线性表长度

int ListLength(Sqlist L)

{

return L.length;

}

//获取线性表某位置元素

void GetElem(Sqlist L,int i,int* e)

{

e = L.elem[i-1];

}

//请输入元素的值,判断其在线性表中是否存在,并返回其下标,不存在则返回0

int LocateElem(Sqlist L,int e)

{

int position = 0;

for(int i=0; i

{

if(L.elem[i] == e)

{

position = i+1;

break;

}

}

return position;

}

//求直接前驱

void PriorElem(Sqlist L,int cur_e,int* pre_e)

{

pre_e = L.elem[cur_e-2];

}

//求直接后继

void NextElem(Sqlist L,int cur_e,int* next_e)

{

next_e = L.elem[cur_e];

}

//在线性表指定位置插入元素

void ListInsert(Sqlist* L,int i,int e)

{

for(int j=L->length; j>=i; j--)

{

L->elem[j] = L->elem[j-1];

}

L->elem[i-1] = e;

L->length++;

}

//删除线性表指定位置元素

void ListDelete(Sqlist* L,int i)

{

for(int j=i-1; jlength-1; j++)

{

(*L).elem[j] = (*L).elem[j+1];

}

L->length--;

}

//显示线性表全部元素

void TraverList(Sqlist L)

{

printf("线性表中的元素有:");

for(int i=0; i

{

printf("%d ",L.elem[i]);

}

printf("\n");

}

//翻转线性表全部元素

void Flip(Sqlist L)

{

int num = L.length / 2;

int* begin = &L.elem[num-1];

int* end = &L.elem[L.length-num];

int middle;

while(num)

{

middle = *begin;

*begin = *end;

*end = middle;

num--;

begin = &L.elem[num-1];

end = &L.elem[L.length-num];

}

printf("翻转成功\n");

}

欢迎转载,转载请标明出处哦

c语言数据结构之线性表的顺序存储结构

线性表,即线性存储结构,将具有“一对一”关系的数据“线性”地存储到物理空间中,这种存储结构就称为线性存储结构,简称线性表. 注意:使用线性表存储的数据,要求数据类型必须一致,线性表存储的数据,要么全不 ...

线性表&顺序线性表

第二章 线性表 参考文献:[数据结构(C语言版)].严蔚敏 本篇章仅为个人学习数据结构的笔记,不做任何用途. 2.1 线性结构的特点 (1). 存在唯一的一个被称为"第一个"的数据 ...

【C语言--数据结构】线性顺序表

线性表的本质: 1.线性表(List)是零个或者多个数据元素的集合: 2.线性表中的数据元素之间是有顺序的: 3.线性表中的数据元素个数是有限的: 4.线性表中的数据元素的类型必须相同: 定义: 线性 ...

动态分配的顺序线性表的十五种操作—C语言实现

线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点 ...

算法与数据结构(一) 线性表的顺序存储与链式存储(Swift版)

温故而知新,在接下来的几篇博客中,将会系统的对数据结构的相关内容进行回顾并总结.数据结构乃编程的基础呢,还是要不时拿出来翻一翻回顾一下.当然数据结构相关博客中我们以Swift语言来实现.因为Swift ...

Java数据结构之线性表

从这里开始将要进行Java数据结构的相关讲解,Are you ready?Let's go~~ java中的数据结构模型可以分为一下几部分: 1.线性结构 2.树形结构 3.图形或者网状结构 接下来的 ...

顺序线性表 ---- ArrayList 源码解析及实现原理分析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值