链表操作

#include "iostream.h"
#include "iomanip.h"

typedef int ElemType;

typedef struct ADTList
{
 ElemType Elem;
 struct ADTList *next;
}ADTList;
////////////////////////////////////////
//链表功能函数
bool InitList(ADTList *&L);
void DestroyList(ADTList *L);
void ClearList(ADTList *L);
bool ListEmpty(ADTList *L);
long ListLength(ADTList *L);
bool GetElem(ADTList *L,long index,ElemType& e);
long LocateElem(ADTList *L,ElemType e);
  int compare(ElemType elem1,ElemType elem2);
bool PriorElem(ADTList *L,ElemType cur_e,ElemType& pre_e);
bool NextElem(ADTList *L,ElemType cur_e,ElemType& next_e);
bool ListInsert(ADTList *L,long index,ElemType e);
bool ListDelete(ADTList *L,long index,ElemType& e);
bool visit(ElemType elem);
bool ListTraverse(ADTList *L);
///////////////////////////////////////
//测试用函数
bool create(ADTList *L);
bool create1(ADTList *L);
bool deleteTest(ADTList *L);
///////////////////////////////////////
int main(int argc,char **argv)
{
 ADTList *list;
 list=NULL;

 cout<<"链表实验程序"<///////////////////////////////////////
 cout<<"List Init:"< if(!InitList(list))
  return 1;
///////////////////////////////////////
 if(!create(list))
  return 1;
 cout< if(!ListTraverse(list))
  return 1;
///////////////////////////////////////
 cout<<?xml:namespace prefix = endl<<"ClearList /> ClearList(list);
 cout< if(!ListTraverse(list))
  return 1;
///////////////////////////////////////
 if(!create1(list))
  return 1;
 cout< if(!ListTraverse(list))
  return 1;
///////////////////////////////////////
 deleteTest(list);
///////////////////////////////////////

 return 0;  
}

时间: 2024-07-30 06:17:29

链表操作的相关文章

部分链表操作总结

部分链表操作总结 #include <iostream> #include <cstdlib> using namespace std; // definition of Node struct Node { int val; Node *next; Node(int x) : val(x), next(NULL){} }; // create a linklist with n nodes Node* create(int n) { Node *head = new Node(r

c++-请大家帮我看下这段实现链表操作的C++的代码。

问题描述 请大家帮我看下这段实现链表操作的C++的代码. push_front这个操作有问题. #include <iterator> using namespace std; template <typename T> class List{ struct node{ node() = default; node(const T& x, node *y=nullptr) :m_data(x), m_next(y) {} T m_data; node *m_next; };

JAVA 数据结构链表操作循环链表_java

JAVA 链表操作:循环链表 主要分析示例: 一.单链表循环链表 二.双链表循环链表 其中单链表节点和双链表节点类和接口ICommOperate<T>与上篇一致,这里不在赘述.参考:JAVA链表操作:单链表和双链表http://www.jb51.net/article/95113.htm 一.单链表循环链表 package LinkListTest; import java.util.HashMap; import java.util.Map; public class SingleCycle

Java 数据结构链表操作实现代码_java

 链表是一种复杂的数据结构,其数据之间的相互关系使链表分成三种:单链表.循环链表.双向链表,下面将逐一介绍.链表在数据结构中是基础,也是重要的知识点,这里讲下Java 中链表的实现, JAVA 链表操作:单链表和双链表 主要讲述几点: 一.链表的简介 二.链表实现原理和必要性 三.单链表示例 四.双链表示例 一.链表的简介 链表是一种比较常用的数据结构,链表虽然保存比较复杂,但是在查询时候比较便捷,在多种计算机语言都相应的应用,链表有多种类别,文章针对单链表和双链表进行分析.链表中数据就像被一个

PHP链表操作简单示例_php技巧

本文实例讲述了PHP链表操作.分享给大家供大家参考,具体如下: 在php中运行数据结构,基本都是用数组模拟的,只是用一直思想而已. 今天遇到的这个问题是,两个链表进行合并. 链表合并效果图 问题描述:A链表是模版链表,B链表的长度不确定,A,B二个链表结合后形成C链表. 说一下编程思想:A链表是模版链表所以在运算完成了,长度了唯一不变的.而B链表的长度是不确定的.所以可以先对B链表进行判断,分了三步: B链表是不是为空 B链表是不是比A链表短或者相等 B链表是不是比A链表长 编程就是要列出尽可能

【转】数据结构链表操作之双链表的基本操作

//Node.h 声明类Node#ifndef Node_H#define Node_H template <class T>class LinkList;       //为是Node类的友员类而声明 template <class T>class Node{   public:            friend class LinkList<T>;   //将LinkList类设为友元类   private:         T data;      Node&l

JAVA数据结构之单链表操作简单实现

和C的语法明显不一样哈. C的链表里,绝对离不开的是*---指针. 其实JAVA和代码思路和C的完全一样呀, 只是JAVA用数据类型的传值(简单类型,结构)和传引用(数组,对象)来区别指针和非指针. 栈数据和堆数据,其实一样...只是看自动化程度的高低以及执行效率的高低互有分别.. 下面代码实现的是前插式,也就是插入和删除节点都是从第一个开始的. 我加了输出语句,显示更明显. 1 class Link 2 { 3 public int iData; 4 public double dData;

《数据结构与算法:Python语言描述》一3.4链表的变形和操作

3.4链表的变形和操作 链表并非只有前面讨论的一种.实际上,人们提出了许多形式不同的链表设计,它们各有优点和适用环境.下面首先介绍单链表的简单变形,而后再介绍双链表. 3.4.1单链表的简单变形 即使同为单链表(即每个结点只有一个指针域),也存在多种不同的设计,而且完全可以根据需要和认识修改已有的设计.现在从前面定义的简单单链表的一个缺点出发,讨论一种修改后的设计. 前面单链表实现有一个缺点:尾端加入元素操作的效率低,因为这时只能从表头开始查找,直至找到表的最后一个结点,而后才能链接新结点. 在

C语言创建和操作单链表数据结构的实例教程_C 语言

1,为什么要用到链表 数组作为存放同类数据的集合,给我们在程序设计时带来很多的方便,增加了灵活性.但数组也同样存在一些弊病.如数组的大小在定义时要事先规定,不能在程序中进行调整,这样一来,在程序设计中针对不同问题有时需要3 0个大小的数组,有时需要5 0个数组的大小,难于统一.我们只能够根据可能的最大需求来定义数组,常常会造成一定存储空间的浪费. 我们希望构造动态的数组,随时可以调整数组的大小,以满足不同问题的需要.链表就是我们需要的动态数组.它是在程序的执行过程中根据需要有数据存储就向系统要求