資料結構3-4周總結(1) 基本操作
借鑑了無數大佬的程式碼 還有自己一遍遍修改後
終於“踉踉蹌蹌”地完成了自己的作業 但感覺還有很多不足 寫幾篇來總結一下近日所學
連結串列操作:
裁判程式
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 5
#define ERROR -1
typedef enum {false, true} bool;
typedef int ElementType;
typedef int Position;
typedef struct LNode *List;
struct LNode {
ElementType Data[MAXSIZE];
Position Last; /* 儲存線性表中最後一個元素的位置 */
};
List MakeEmpty();
Position Find( List L, ElementType X );
bool Insert( List L, ElementType X, Position P );
bool Delete( List L, Position P );
int main()
{
List L;
ElementType X;
Position P;
int N;
L = MakeEmpty();
scanf("%d", &N);
while ( N-- ) {
scanf("%d", &X);
if ( Insert(L, X, 0)==false )
printf(" Insertion Error: %d is not in.\n", X);
}
scanf("%d", &N);
while ( N-- ) {
scanf("%d", &X);
P = Find(L, X);
if ( P == ERROR )
printf("Finding Error: %d is not in.\n", X);
else
printf("%d is at position %d.\n", X, P);
}
scanf("%d", &N);
while ( N-- ) {
scanf("%d", &P);
if ( Delete(L, P)==false )
printf(" Deletion Error.\n");
if ( Insert(L, 0, P)==false )
printf(" Insertion Error: 0 is not in.\n");
}
return 0;
}
List MakeEmpty():建立並返回一個空的線性表;
Position Find( List L, ElementType X ):
返回線性表中X的位置。若找不到則返回ERROR;
bool Insert( List L, ElementType X, Position P ):
將X插入在位置P並返回true。若空間已滿,則列印“FULL”並返回false;
如果引數P指向非法位置,則列印“ILLEGAL POSITION”並返回false;
bool Delete( List L, Position P ):將位置P的元素刪除並返回true。
若引數P指向非法位置,
則列印“POSITION P EMPTY”(其中P是引數值)並返回false。
順序表操作集
//建立並返回一個空連結串列
List MakeEmpty(){
List L =(List)malloc(sizeof(struct LNode));
L->Last=-1;
return L;
}
//返回線性表中X的位置。若找不到則返回ERROR;
Position Find( List L, ElementType X ){
for(Position i=0;i<=L->Last;i++){
if(L->Data[i]==X){return i;}
}return ERROR;
bool Insert( List L, ElementType X, Position P ):
將X插入在位置P並返回true。
若空間已滿,則列印“FULL”並返回false;
如果引數P指向非法位置,則列印“ILLEGAL POSITION”並返回false;
bool Insert( List L, ElementType X, Position P ){
int k;
if(L->Last==MAXSIZE-1){
printf("FULL");
return false;
}
if(p<1||p>L->Last+2){
printf("ILLEGAL POSITION");
return false;
}
for(int i-L->Last;i>P;i--){
L->Data[i+1]=L->Data[i];
}
L->Data[P]=X;
L->Last++;
return true;
}
bool Delete( List L, Position P ):
將位置P的元素刪除並返回true。
若引數P指向非法位置,則列印“POSITION P EMPTY”
(其中P是引數值)並返回false。
bool Delete( List L, Position P ){
if(P<0||P>L->Last){
printf("POSITION %d EMPTY",P);
return false;
}
for(int i=P;i<L->Last;i++){
L->Data[i]=L->Data[i+1];
}
L->Last--;
return true;
}
和課本上不一樣的是 判斷的都是P<0||P>L->last
而書上是P<1||P>L->Last 是書和題的差別還是我寫的有問題呢?
相關文章
- C++資料結構連結串列的基本操作C++資料結構
- 七、基本資料結構(樹形結構)資料結構
- 基本資料結構梳理資料結構
- 實戰資料結構(1)_單連結串列的操作資料結構
- 周總結
- c++基本資料結構C++資料結構
- caffe的基本資料結構資料結構
- Python基本資料結構Python資料結構
- 資料結構之連結串列操作資料結構
- 資料結構實驗5、鏈佇列的基本操作資料結構佇列
- 資料結構:線性表(Python實現基本操作)資料結構Python
- EntityFramework Core筆記:表結構及資料基本操作(2)Framework筆記
- 周總結23
- 實戰資料結構(5)_雙向迴圈連結串列的基本操作資料結構
- 資料結構(1):棧資料結構
- redis資料結構及操作Redis資料結構
- 資料庫結構操作 (轉)資料庫
- 資料結構線性表的鏈式儲存結構(單連結串列)的表示及其基本操作資料結構
- Redis基本資料結構之ZSetRedis資料結構
- 基本資料結構演算法資料結構演算法
- 資料結構的基本概念資料結構
- Redis概述及基本資料結構Redis資料結構
- JS 中普通物件資料型別的基本結構和操作JS物件資料型別
- 資料結構c語言實現順序表基本操作資料結構C語言
- 周總結7.19
- 8.3日周總結
- Javascript-DOM基本操作總結(1)JavaScript
- php實現基本資料結構之連結串列PHP資料結構
- caffe study - 資料結構(1)資料結構
- 資料結構實驗1資料結構
- 【資料結構】樹的基本知識資料結構
- MySQL InnoDB表--BTree基本資料結構MySql資料結構
- Redis系列(五):資料結構List雙向連結串列中基本操作操作命令和原始碼解析Redis資料結構原始碼
- Redis基本資料型別底層資料結構Redis資料型別資料結構
- 資料結構(線性錶鏈式儲存)的幾個基本操作資料結構
- [PY3]——內建資料結構(1)——列表及其常用操作資料結構
- 資料結構學習(C++)——圖【1】(基本儲存方法) (轉)資料結構C++
- Redis 學習-資料結構基本簡介Redis資料結構