1. 程式人生 > >程式設計實現順序表的以下基本操作:建立順序表,修改順序表,插入順序表,刪除順序表。

程式設計實現順序表的以下基本操作:建立順序表,修改順序表,插入順序表,刪除順序表。

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
typedef int ElemType;
typedef int Status;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
ElemType * newbase,*p,*q;
//順序表的結構描述
typedef struct{
    ElemType *elem;
    int length;
    int listsize;
}SqList;
//順序表的初始化
Status InitList_Sq(SqList &L){
    //構造一個空的線性表L
    L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
    if(!L.elem)exit(OVERFLOW); //儲存分配失敗
    L.length = 0;   //空表長度為0
    L.listsize = LIST_INIT_SIZE;    //初始儲存容量
    return OK;
}//InitList_Sq
//順序表的建立
void Creat_Sq(SqList &L){
    int i,n;
    cout<<"請輸入順序表的元素個數:";
    cin>>n;
    for(i=0;i<n;i++){
        cout<<"請輸入第 "<<(i+1)<<" 個元素:";
        cin>>L.elem[i];
        L.length++;
    }
}
//順序表的顯示
void Show_Sq(SqList L){
    for(int i=0;i<L.length;i++){
        cout<<L.elem[i]<<" ";
    }
    cout<<endl;
}
//順序表的插入
Status ListInsert_Sq(SqList &L,int i,ElemType e){
    if(i<1||i>L.length+1){
        cout<<"i值不合法"<<endl;
        return ERROR;
    }
    if(L.length>=L.listsize){
        newbase = (ElemType *)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
        if(!newbase)exit(OVERFLOW);
        L.elem = newbase;
        L.listsize += LISTINCREMENT;
    }
    q = &(L.elem[i-1]);
    for(p = &(L.elem[L.length-1]);p>=q;--p){
        *(p+1) = *p;
    }
    *q = e;
    ++L.length;
    return OK;
}
//順序表的刪除
Status ListDel_Sq(SqList &L,int i,ElemType e){
    if(i<1||i>L.length+1){
        cout<<"i值不合法"<<endl;
        return ERROR;
    }
    q = &(L.elem[L.length-1]);
    for(p=&(L.elem[i-1]);p<=q;p++){
        *p=*(p+1);
    }
    e=*q;
    --L.length;
    return OK;
}
//順序表的修改
Status ListUpdate_Sq(SqList &L,int i,ElemType e){
    if(i<1||i>L.length+1){
        cout<<"i值不合法"<<endl;
        return ERROR;
    }
    L.elem[i-1] = e;
    return OK;
}
int main()
{
    SqList L;
    InitList_Sq(L);
    Creat_Sq(L);
    Show_Sq(L);
    int num=0,i;
    ElemType e;
    bool flag = true;
    while(flag){
        cout<<"1.插入 "<<"2.刪除 "<<"3.修改 "<<endl;
        cout<<"請輸入要執行操作的序號:";
        cin>>num;
        if(num>=1&&num<=3){
            flag=false;
        }else{
            cout<<"輸入非法"<<endl;
        }
    }
    switch(num){
        case 1 :{
            cout<<"請輸入要插入的位置:";
            cin>>i;
            cout<<"請輸入要插入的數:";
            cin>>e;
            ListInsert_Sq(L,i,e);
        }break;
        case 2 :{
            cout<<"請輸入要刪除的位置:";
            cin>>i;
            ListDel_Sq(L,i,e);
        }break;
        case 3 :{
            cout<<"請輸入要修改的位置:";
            cin>>i;
            cout<<"請輸入修改成的數:";
            cin>>e;
            ListUpdate_Sq(L,i,e);
        }break;
    }
    Show_Sq(L);
    return 0;
}


相關推薦

程式設計實現順序以下基本操作建立順序修改順序插入順序刪除順序

#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; typedef int ElemType; typedef int Statu

程式設計師面試寶典(第三版)——單鏈基本操作建立求長度輸出排序插入刪除逆置

程式設計實現一個單鏈表的建立,求單鏈表的長度,列印輸出單鏈表,對單鏈表進行排序,插入元素,刪除元素,對單鏈表進行逆置。 我是借鑑參考資料,然後自己寫規範,對函式都進行了呼叫,每一次呼叫,都有輸出單鏈表。程式完整,已除錯執行。 源程式: #include<iostrea

Qt5.9Creator讀寫Mysql5.7.17資料庫詳細例子(資料庫基本操作建立查詢插入刪除修改

本文章主要總結的內容是用Qt5.9Creator工程讀寫Mysql5.7.17資料庫。具體的操作步驟如下所述。   一、用Qt5.9的Creator建立一個Console工程,選擇MinGW32編譯器。   二、新增程式碼 2.1建立好工程後,在.pro檔案裡

二叉樹遍歷的基本操作建立、銷燬;層序遍歷

一、簡單的建立、銷燬 .h # pragma once # include<assert.h> # include<malloc.h> # include<stdio.h> # include<stdlib.h> # include<

實驗三順序實現學生系統的基本操作

實驗目的:鞏固線性表的資料的儲存方法和相關操作,學會針對具體應用,使用線性表的相關知識來解決具體問題。 實驗內容:建立一個由n個學生成績的線性表,n的大小由自己確定,每個學生的成績資訊由自己確定,實現資料的對錶進行插入、刪除、查詢等操作。 原始碼: # ifndef SeqList_H

動態順序基本操作實現

順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下采用陣列儲存。在陣列上完成資料的增刪查改。 順序表一般可以分為: 靜態順序表:使用定長陣列儲存。 動態順序表:使用動態開闢的陣列儲存。 SeqList.h #ifndef __SeqLi

順序基本操作實現

//庫函式標頭檔案包含 #include<stdio.h> #include<malloc.h> #include<stdlib.h> //函式狀態碼定義 #def

資料結構順序基本操作和還原

實現順序表的基本操作 三、實驗內容 定義順序表(可用結構體實現)、所需要的符號常量以及在該順序表上所進行的操作(用函式實現)初始化、插入新元素、刪除指定元素、查詢(返回指定元素位置)、檢索指定位置的元素。   要求:1、在主函式中呼叫各個函式實現相應操作,首

資料結構C/C++程式碼實現 順序基本操作

順序表棧基本操作的實現  原始碼: #include<stdio.h> #include<stdlib.h> #include<iostream> using namespace std; #define MAXSIZE 100 //#d

順序基本操作及C語言完整實現

對順序表進行操作,大致可分為以下幾類: 表的建立; 表中新增(新增)資料元素; 表中刪除資料元素; 表中查詢指定資料元素; 表中更改某資料元素; 以上操作各自的原理及實現如下所示。 順序表的建立 順序表的建立,也就是順序表進行初始化,在預先申請記憶體空間的同時,給變數 size 和 len

C++實現順序結構線性基本操作

這兩天在準備《軟體工程》期末考試,順帶著整理一下今天覆習線性表基本操作的程式碼。 ps:本人程式設計水平一般,有問題還望指出,高手請見諒。 main.cpp /*      內容:建立元素資料型別為CElemType的動態順序結構線性表,並封裝對錶的操作函式     作

順序基本操作及C語言實現(詳解版)

我們學習了順序表及初始化的過程,本節學習有關順序表的一些基本操作,以及如何使用 C 語言實現它們。 順序表插入元素 向已有順序表中插入資料元素,根據插入位置的不同,可分為以下 3 種情況: 插入到順序表的表頭; 在表的中間位置插入元素; 尾隨順序表中已有元素,作為順序表中的最後一個元素; 雖然資

C語言實現順序基本操作

1.定義 線性表的順序儲存是指在記憶體中用一組地址連續的儲存單元依次儲存線性表的各元素,用這種儲存形式儲存的線性表稱為順序表。也就是說,順序表以資料元素在計算機內的物理位置相鄰來表示資料元素線上性表中的邏輯相鄰關係。 2.線性表的順序儲存示意圖

連結串列順序基本操作及其實現的棧與佇列

1,順序表 在c裡面,這一部分也就是靜態表和動態表的實現,插入,刪除有丁點意思。 靜態表靠陣列和長度實現(注意長度這一點,因為它反映了當前表內容長度,十分重要) 動態表依靠申請連續空間實現(結構體內部包括首地址,當前規模以及長度) 插入: int *p; p=&

基本操作java語言實現

auth ndb ack pan log 定義 pac ext col package com.baorant; public class JavaDemo { public static void main(String[] args) {

Java實現雙向循環鏈基本操作

scrip ide head ring 鏈表的基本操作 print static count out 1 package Eric.ADT; 2 3 /** 4 * <p> 5 * Title:doubleLinkedList 6

03 數據導入導出 、 記錄基本操作 、 查詢及匹配條件 、 多查詢

ins 3.5 添加 add class 文件名 tween 數值 平均值 day03一數據導入二數據導出三管理表記錄 *3.1 插入表記錄3.2 查詢表記錄 (單表 多表 嵌套 連接)3.3 條件匹配3.4 更新表記錄字段的值3.5 刪除表記錄++++++

單鏈基本操作實現

turn lag 個數 信息 listt 帶頭結點 img 鏈表的基本操作 原因 1、寫這篇博文的原因 C語言有三個重要部分:流程控制、函數、指針。 對於指針,單單了解它的簡單運用是遠遠不夠的,最重要的是學習鏈表。所以這篇文章通過用C語言實現鏈表的一些基本操作和總結,希望對

日常學習隨筆-數組、單鏈、雙鏈三種形式實現棧結構的基本操作

ext return lse efi CA 需要 kde 當前 default 一、棧結構   棧(stack)是限制插入和刪除只能在一個位置上的表,該位置是 表的末端,叫做棧的頂(Top)。對棧的基本操作有push(進棧),pop(出棧),peak(棧頂元素),size(

順序基本操作

print type text 復雜 har pla 元素 斷線 number 順序表基本運算 初始化線性表 InitList(L) 銷毀線性表 DestoryList(L) 判斷線性表是否為空 ListEmpty(L) 求線性表的長度 ListLength(L) 輸出線