线性表的链式存储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 ...
随机推荐
- POJ2743Mobile Computing[DFS 状态压缩]
Mobile Computing Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 666 Accepted: 224 ...
- Application中的路径
前提条件 项目工程目录:E:/Work/cosmosbox/cb-client/ 我电脑当前的用户名:qingqing PersistentDataPath Application.persisten ...
- json注入
- [No00002B]知乎精选:如果兔子都在拼命奔跑,乌龟该如何前进
最近看到友人分享的一篇好文章,看了不下三遍,想开了很多的事情…… 在这个世界上永远存在一些比你更加牛的人,无论什么方面.如果把人生比作攀登,也许你穷其一生可以达到一定的高度,但对某些人来说珠峰都不成问 ...
- Android终端配置isatap隧道使用IPV6的方法
使用isatap隧道可以在手机有IPV4网络的情况下访问IPv6网络资源.关于isatap隧道的配置方法,清华.上交两所学校都给出了相应的在windows xp/2003,windows 2000,以 ...
- ItemIndex
ItemIndex一般是列表的一个属性,比如TCombobox和TListBox都有,表示当前选中的项(Item)的下标(Index),如果没有选中,那它是-1,所以一般判断TCombox或TList ...
- 几种.NET平台数据持久化框架介绍
原文连接:http://yuxnet.blog.163.com/blog/static/164863495201131532223362/ 在.NET平台下,关于数据持久层框架非常多,本文主要对如下几 ...
- 使用PHP获取根域名的方法!
/** * 取得根域名 * @param type $domain 域名 * @return string 返回根域名 */ function GetUrlToDomain($domain) { $r ...
- Linux常用命令笔记
~ 我的home目录/ 系统根目录进入home目录:cd \进入跟目录:cd /Maven编译:mvn clean deploy -U -Dmaven.test.skip=true dependenc ...
- php数组函数,字符串,linux命令
1>> Linux常用命令一. 文件目录操作命令1. ls命令 命令格式:ls [选项] [目录名] 命令功能:列出目标目录中所有的子目录和文件.2. 命令格式:cd [目录名 ...