线性表的定义与操作 链式表

typedef struct LNode *PtrToLNode; struct LNode {     ElementType Data;     PtrToLNode Next; }; typedef PtrToLNode Position; typedef PtrToLNode List; /* 查找 */ #define ERROR NULL Position Find( List L, ElementType X ) {     Position p = L; /* p指向L的第1个结点 */     while ( p && p->Data!=X )         p = p->Next;     /* 下列语句可以用 return p; 替换 */     if ( p )         return p;     else         return ERROR; } /* 带头结点的插入 */ /*注意:在插入位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是链表结点指针,在P之前插入新结点 */ bool Insert( List L, ElementType X, Position P ) { /* 这里默认L有头结点 */     Position tmp, pre;     /* 查找P的前一个结点 */             for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ;                 if ( pre==NULL ) { /* P所指的结点不在L中 */         printf("插入位置参数错误\n");         return false;     }     else { /* 找到了P的前一个结点pre */         /* 在P前插入新结点 */         tmp = (Position)malloc(sizeof(struct LNode)); /* 申请、填装结点 */         tmp->Data = X;          tmp->Next = P;         pre->Next = tmp;         return true;     } } /* 带头结点的删除 */ /*注意:在删除位置参数P上与课程视频有所不同,课程视频中i是序列位序(从1开始),这里P是拟删除结点指针 */ bool Delete( List L, Position P ) { /* 这里默认L有头结点 */     Position tmp, pre;     /* 查找P的前一个结点 */             for ( pre=L; pre&&pre->Next!=P; pre=pre->Next ) ;                 if ( pre==NULL || P==NULL) { /* P所指的结点不在L中 */         printf("删除位置参数错误\n");         return false;     }     else { /* 找到了P的前一个结点pre */         /* 将P位置的结点删除 */         pre->Next = P->Next;         free(P);         return true;     } }

原文地址:https://www.cnblogs.com/carpe-diem123/p/12114561.html

时间: 2024-10-14 03:26:14

线性表的定义与操作 链式表的相关文章

队列的定义与操作 链式存储

typedef struct Node *PtrToNode; struct Node { /* 队列中的结点 */     ElementType Data;     PtrToNode Next; }; typedef PtrToNode Position; struct QNode {     Position Front, Rear;  /* 队列的头.尾指针 */ int MaxSize;           /* 队列最大容量 */ }; typedef struct QNode *

简要比较线性表的顺序存储结构和链式存储结构

我们分别从存储分配方式.时间性能.空间性能三方面来做对比. 存储分配方式 顺序存储结构用一段连续的存储单元依次存储线性表的数据元素. 单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 时间性能 <1>查找 顺序存储结构O(1) 单链表O(n) <2>插入和删除 顺序存储结构需要平均移动表长一半的元素,时间为O(n) 单链表在计算出某位置的指针后,插入和删除时间仅为O(1) 空间性能 顺序存储结构需要预分配存储空间,分大了,容易造成空间浪费,分小了,容易发生溢出. 单链

线性表的顺序存储结构和链式存储结构

前言 上一篇<栈>中提到了栈的顺序存储结构和链式存储结构,现在就对此做个简单的比较.因为栈是线性表的一种,顺序存储结构和链式存储结构实际是线性表的两种存储方式.而栈和队列都是两种重要的线性表结构.所以本文标题直接为线性表的顺序存储结构和链式存储结构. 开始比较两种不同的存储方式 一.顺序存储结构(也可称为顺序表) 顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻,并且,顺序表的存储空间需要预先分配. 优点: (1)方法简单,各种高级语言中都有数组,容易实现. (2)不用为表示节点间的逻辑

4-3 求链式表的表长 (10分)

本题要求实现一个函数,求链式表的表长. 函数接口定义: int Length( List L ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List; L是给定单链表,函数Length要返回链式表的长度. 裁判测试程序样例: #include <stdio.h> #include <stdl

pta-数据结构与算法题目集(中文)--4-4 链式表的按序号查找

本题要求实现一个函数,找到并返回链式表的第K个元素. 函数接口定义: ElementType FindKth( List L, int K ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List; L是给定单链表,函数FindKth要返回链式表的第K个元素.如果该元素不存在,则返回ERROR. 裁判

4-4 链式表的按序号查找 (10分)

本题要求实现一个函数,找到并返回链式表的第K个元素. 函数接口定义: ElementType FindKth( List L, int K ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List; L是给定单链表,函数FindKth要返回链式表的第K个元素.如果该元素不存在,则返回ERROR. 裁判

数据结构 链式表

数据结构课作业之链式表. 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 using namespace std; 5 6 struct Node 7 { 8 char name[30]; 9 char telp[30]; 10 Node * next; 11 }; 12 13 class Stulist 14 { 15 public : 16 Stulist (); 17 ~Stulis

6-3 求链式表的表长

6-3 求链式表的表长(10 分) 本题要求实现一个函数,求链式表的表长. 函数接口定义: int Length( List L ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List; L是给定单链表,函数Length要返回链式表的长度. 裁判测试程序样例: #include <stdio.h>

6-4 链式表的按序号查找

6-4 链式表的按序号查找(10 分) 本题要求实现一个函数,找到并返回链式表的第K个元素. 函数接口定义: ElementType FindKth( List L, int K ); 其中List结构定义如下: typedef struct LNode *PtrToLNode; struct LNode { ElementType Data; PtrToLNode Next; }; typedef PtrToLNode List; L是给定单链表,函数FindKth要返回链式表的第K个元素.如