线性表的链式存储C语言版
#include <stdio.h>
#include <malloc.h> #define N 10 typedef struct Node
{
int data;
struct Node *next;
}Node, *LinkedList; void initList(LinkedList *L);
int ListInsert(LinkedList *L, int index, int e);
int ListDelete(LinkedList *L, int index, int *e);
void printList(LinkedList L); int main(int argc, char const *argv[])
{
int e;
LinkedList L=NULL;
initList(&L);
for (int i = 1; i <= N; ++i)
{
ListInsert(&L,i,i);
}
printList(L);
for (int i = L->data; i >=1; --i)
{
ListDelete(&L,i,&e);
printf("%d\t", e);
}
return 0;
} void initList(LinkedList *L)
{ (*L) = (Node*)malloc(sizeof(Node));
(*L)->data = 0;
(*L)->next = NULL;
} int ListInsert(LinkedList *L, int index, int e)
{
if(index>(*L)->data+1 || index<=0) return -1;
int i = 0;
Node *p = (*L); while(p)
{ if(i==index-1)
{
Node *t = (Node*)malloc(sizeof(Node));
t->data = e;
t->next = p->next;
p->next = t;
(*L)->data += 1;
return 0;
}
++i;
p = p->next;
} }
int ListDelete(LinkedList *L, int index, int *e)
{
if(index<=0 || index>=(*L)->data+1) return -1;
int i=0;
Node* p = (*L);
while(p)
{
if(i==index-1)
{
Node *q = p->next;
p->next = q->next;
*e = q->data;
free(q);
q = NULL;
return 0;
} ++i;
p = p->next;
}
}
void printList(LinkedList L)
{
Node *p = L;
while(p->next)
{
p = p->next;
printf("%d\t",p->data);
}
}
线性表的链式存储C语言版的更多相关文章
- 线性表的链式存储——C语言实现
SeqList.h #ifndef _WBM_LIST_H_ #define _WBM_LIST_H_ typedef void List; typedef void ListNode; //创建并且 ...
- C++线性表的链式存储结构
C++实现线性表的链式存储结构: 为了解决顺序存储不足:用线性表另外一种结构-链式存储.在顺序存储结构(数组描述)中,元素的地址是由数学公式决定的,而在链式储存结构中,元素的地址是随机分布的,每个元素 ...
- C++编程练习(2)----“实现简单的线性表的链式存储结构“
单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 对于查找操作,单链表的时间复杂度为O(n). 对于插入和删除操作,单链表在确定位置后,插入和删除时间仅为O(1). 单链表不需要分配存储 ...
- C 线性表的链式存储实现及插入、删除等操作示例
一.链式存储的优势 线性表的存储可以通过顺序存储或链式存储实现,其中顺序存储基于数组实现(见本人上一篇博客),在进行插入删除等操作时,需对表内某一部分元素逐个移动,效率较低.而链式结构不依赖于地址连续 ...
- 数据结构-线性表的链式存储相关算法(C语言实现)
链表的简单介绍 为什么需要线性链表 当然是为了克服顺序表的缺点,在顺序表中,做插入和删除操作时,需要大量的移动元素,导致效率下降. 线性链表的分类 按照链接方式: 按照实现角度: 线性链表的创建和简单 ...
- 线性表 顺序存储 链式存储 ---java实现
首先抽象出一个线性表抽象类(包括主要的增删操作) public abstract class MyAbstractList<E> { public abstract void add(E ...
- typedef struct LNode命名结构指针(线性表的链式存储)
一.typedef 关键字 1. 简介: typedef工具是一个高级数据特性,利用typedef可以为某一些类型自定义名称. 2. 工作原理: 例如我们定义链表的存储结构时,需要定义结点的存储数据元 ...
- 线性表的链式存储结构的实现及其应用(C/C++实现)
存档----------- #include <iostream.h> typedef char ElemType; #include "LinkList.h" voi ...
- 线性表的顺序存储和链式存储c语言实现
一.线性表的顺序存储 typedef int ElemType;typedef struct List { ElemType *data;//动态分配 ,需要申请空间 int length; }Lis ...
随机推荐
- Windows Azure 负载均衡会话保持
Windows Azure的负载均衡器默认是5元组的hash:源地址,源端口,目的地址,目的端口,协议.即:只有上述五个元组完全一致的会话数据包才会被转发到同一个后端服务器.显然,对于绝大多数通过NA ...
- Semiautomated IMINT Processing Baseline System——翻译
题目 半自动的IMINT(图像情报)处理基准系统 摘要 SAIP ACTD(半自动图像情报处理高级概念技术展示项目)的目的是,通过战略上的传感器采集,使图像成为指挥官掌控整个战场的主要源头.该采集系统 ...
- 《数据结构》之串的模式匹配算法——KMP算法
//串的模式匹配算法 //KMP算法,时间复杂度为O(n+m) #include <iostream> #include <string> #include <cstri ...
- Golang tips
1.go test 测试单个函数 go test -v -test.run Test* 2.
- [Flex] flex手机项目如何限制横竖屏?只允许横屏?
flex手机项目如何限制横竖屏?只允许横屏? 有人知道吗?求教.. 工程中 xxx-app.xml 找到</aspectRatio> 去掉注释 修改为<aspectRatio&g ...
- LoadRunner 12.02 安装教程及中文语言包安装
注意事项: 安装前,把所有的杀毒软件和防火墙关闭. 若以前安装过LoadRunner,则将其卸载. 安装路径不要带中文字符. LoadRunner 12已经不再支持xp系统,仅支持win7和win8系 ...
- uboot 移植遇到的问题及解决方法(转)
http://blog.sina.com.cn/s/blog_988ec60801017iy3.html 一 在commond env_nand.c: In function 'saveenv': ...
- Oracle中的NVL函数
Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...
- HTML 学习笔记 CSS样式(文本)
CSS文本属性可以定义文本的外观 通过文本属性 您可以改变文本的颜色 字符间距 文本对齐装饰文本 对文本进行缩进等等. 缩进文本 把web页面上的段落的第一行缩进,这是最常用的文本格式化效果. css ...
- flask表单提交的两种方式
一.通用方式 通用方式就是使用ajax或者$.post来提交. 前端html <form method="post" action="/mockservice&qu ...