线性表的链式存储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 ...
随机推荐
- [转]ng-grid
本文转自:http://angular-ui.github.io/ui-grid/ Getting Started Steps for getting started (example on righ ...
- ListView的基础应用
在写完基础的布局之后,下一课我们会学习一下如何使用Android中一个非常重要,但是对于新手略有困难的ListView,甚至很久以前都有人说过,会不会写ListView是Android能否入门的第一步 ...
- cuda中thread id
//////////////////////////////////////////////////////////////////////////// // // Copyright 1993-20 ...
- openjudge1768 最大子矩阵[二维前缀和or递推|DP]
总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...
- Flex4 vs Flex3: Repeater vs DataGroup
repeaters太老土了!如果你过去使用过它,你会发出这种感概.现在,我们终于要摆脱它了.Repeaters不仅有沉重的组件,而且接合使用很不方便.那么,Flex 4中有什么可以帮助我们吗?Data ...
- Flex数据绑定陷阱(一)
Flex数据绑定陷阱:常见的误用和错误 当构建Flex或者Adobe AIR程序时,将一个对象的值自动的传递给另一个对象这种处理是数据绑定最常 用并最有用的特征之一. 尽管如此,同时数据绑定会减缓程序 ...
- Apache和Tomcat区别
Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置.Apache是web服务 ...
- poj[2392]space elevator
Description The cows are going to space! They plan to achieve orbit by building a sort of space elev ...
- <转>SQL语句大全
本文为转载,原文地址:http://www.cnblogs.com/cangqiongbingchen/p/4530333.html 一.基 础 1.说明:创建数据库CREATE DATABASE ...
- AngularJs 时间格式化处理
1.AngularJs的controller中格式: var dateAsString = $filter('date')(item_date, "yyyy-MM-dd hh:mm:ss&q ...