數據結構實現順序表的尾插,尾刪,按值查找/修改/刪除,按下標查找/增加/刪除

頭文件:head.h

#ifndef __HEAD_H__
#define __HEAD_H__#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXSIZE 20enum num {success,false=-1};typedef int datatype;typedef struct
{int len;datatype data[MAXSIZE];
}Sqlist;Sqlist* create_sqlist();int insert(Sqlist* list,datatype element);void show(Sqlist *list);int tail_delete(Sqlist *list);int add_insert(Sqlist *list,int sub,datatype element);int delete_insert(Sqlist *list,int sub);int change_list(Sqlist *list,int sub,datatype element);void find(Sqlist *list,int sub);int find_data(Sqlist* list,datatype element);void delete_data(Sqlist* list,datatype element);void change_data(Sqlist* list,datatype element);
void del_double(Sqlist* list);
void swap(Sqlist* list);
void choice_swap(Sqlist* list);
#endif

測試文件:test.c

#include"head.h"//創建順序表
Sqlist * create_sqlist()
{Sqlist *list = (Sqlist*)malloc(sizeof(Sqlist));if(NULL == list){printf("創建失敗!");return NULL;}list->len=0;memset(list->data,0,sizeof(list->data));return list;
}//尾插
int insert(Sqlist* list,datatype element)
{if(NULL ==list||list->len==MAXSIZE){printf("插入失敗");return false;}list->data[list->len]=element;list->len++;return success;
}//展示順序表
void show(Sqlist *list)
{if(NULL==list ||list->len==0){printf("false");return ;}for(int i=0;i<list->len;i++){printf("%d\t",list->data[i]);}putchar(10);
}//尾刪
int tail_delete(Sqlist *list)
{if(NULL==list||list->len==0){printf("刪除失敗");return false;}list->data[list->len-1]=0;list->len--;return success;
}//給定下標插入數據
int add_insert(Sqlist *list,int sub,datatype element)
{if(NULL==list||list->len==MAXSIZE||sub<0||sub>list->len){printf("插入失敗\n");return false;}for(int i=list->len-1;i>=sub;i--){list->data[i+1]=list->data[i];}list->data[sub]=element;list->len++;return success;
}//給定下標刪除數據
int delete_insert(Sqlist *list,int sub)
{if(NULL==list||sub<0||sub>=list->len||list->len==0){printf("刪除失敗\n");return false;}for(int i=sub+1;i<list->len;i++){list->data[i-1]=list->data[i];}list->len--;return success;
}//給定下標修改數據
int change_list(Sqlist *list,int sub,datatype element)
{if(NULL==list ||sub<0||sub>=list->len||list->len==0){printf("修改失敗\n");return false;}list->data[sub]=element;return success;
}//給定下標查找數據
void find(Sqlist *list,int sub)
{if(NULL==list ||sub<0||sub>=list->len||list->len==0){printf("查找失敗\n");return ;}printf("%d\n",list->data[sub]);
}//按元素元素查找
int find_data(Sqlist* list,datatype element)
{if(NULL==list||list->len==0){printf("查找失敗\n");return false;}for(int i=0;i<list->len;i++){if(list->data[i]==element){return i;}}
}//按元素刪除
void delete_data(Sqlist* list,datatype element)
{int j=find_data(list,element);delete_insert(list,j);
}//按元素修改
void change_data(Sqlist* list,datatype element)
{int j=find_data(list,element);printf("請輸入修改的數據:");int data;scanf("%d",&data);change_list(list,j,data);
}//去重
void del_double(Sqlist* list)
{if(NULL==list||list->len==0||list->len==1){printf("去重失敗\n");return;}for(int i=0;i<list->len;i++){for(int j=i+1;j<list->len;j++){if(list->data[i]==list->data[j]){delete_insert(list,j);j--;}}}
}//冒泡排序
void swap(Sqlist* list)
{int t;if(NULL==list||list->len==0){printf("排序失敗\n");return;}for(int i=0;i<list->len-1;i++){for(int j=0;j<list->len-1-i;j++){if(list->data[j]<list->data[j+1])t=list->data[j];list->data[j]=list->data[j+1];list->data[j+1]=t;}}
}//選擇排序
void choice_swap(Sqlist* list)
{int t;int i;int min_index;if(NULL==list||list->len==0){printf("排序失敗\n");return;}for(i=1;i<list->len;i++){min_index=i-1;for(int j=i;j<list->len;j++){if(list->data[min_index]>list->data[j]){min_index=j;}}if(min_index!=i-1){t=list->data[min_index];list->data[min_index]=list->data[i-1];list->data[i-1]=t;}}
}

主文件:main.c

#include"head.h"int main(int argc, const char *argv[])
{Sqlist* list=create_sqlist();int n;datatype element;printf("請輸入插入幾個數:");scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d",&element);insert(list,element);}show(list);tail_delete(list);show(list);int sub;printf("請輸入添加數據的下標:");scanf("%d",&sub);printf("請輸入添加的數據:");scanf("%d",&element);add_insert(list,sub,element);show(list);printf("請輸入刪除的下標:");scanf("%d",&sub);delete_insert(list,sub);show(list);printf("請輸入修改的下標:");scanf("%d",&sub);printf("請輸入修改的數據:");scanf("%d",&element);change_list(list,sub,element);show(list);printf("請輸入查找的下標:");scanf("%d",&sub);find(list,sub);//按值查找printf("請輸入要查找的值:");scanf("%d",&element);int j=find_data(list,element);printf("要查找的值的下標為:%d\n",j);//按值刪除printf("請輸入要刪除的值:");scanf("%d",&element);delete_data(list,element);show(list);//按值修改	printf("請輸入要修改的值:");scanf("%d",&element);change_data(list,element);show(list);//去重del_double(list);printf("去重后的數據為:");show(list);//冒泡排序swap(list);printf("降序后的結果為:");show(list);//選擇排序choice_swap(list);printf("升序后的結果為:");show(list);return 0;
}

運行結果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70136.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70136.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70136.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于Spring Boot+Vue的寵物服務管理系統(源碼+文檔)

項目簡介 寵物服務管理系統實現了以下功能&#xff1a; 基于Spring BootVue的寵物服務管理系統的主要使用者分為用戶管理模塊&#xff0c;由于系統運行在互聯網絡中&#xff0c;一些游客或者病毒惡意進行注冊&#xff0c;產生大量的垃圾用戶信息&#xff0c;管理員可以對這些…

2. grafana插件安裝并接入zabbix

一、在線安裝 如果不指定安裝位置&#xff0c;則默認安裝位置為/var/lib/grafana/plugins 插件安裝完成之后需要重啟grafana 命令在上一篇講到過 //查看相關幫助 [rootlocalhost ~]# grafana-cli plugins --help //從列舉中的插件過濾zabbix插件 [rootlocalhost ~]# grafana…

【Linux】Ubuntu Linux 系統——Python集成開發環境

??大家好&#xff0c;我是練小杰&#xff0c;今天周四了&#xff0c;明天就周五了&#xff0c;再堅持堅持又能休息了&#xff01;&#xff01;&#x1f606; 本文是有關Linux 操作系統中Python集成開發環境基礎知識&#xff0c;后續將添加更多相關知識噢&#xff0c;謝謝各位…

DeepSeek+即夢 做AI視頻

DeepSeek做AI視頻 制作流程第一步&#xff1a;DeepSeek 生成視頻腳本和分鏡 第二步&#xff1a;生成分鏡圖片繪畫提示詞第三步&#xff1a;生成分鏡圖片第四步&#xff1a;使用可靈 AI 工具&#xff0c;將生成的圖片轉成視頻。第五步&#xff1a;剪映成短視頻 DeepSeek 真的強&…

react傳遞函數與回調函數原理

為什么 React 允許直接傳遞函數&#xff1f; 回調函數核心邏輯 例子&#xff1a;父組件控制 Modal 的顯示與隱藏 // 父組件 (ParentComponent.tsx) import React, { useState } from react; import { Modal, Button } from antd; import ModalContent from ./ModalContent;co…

【Spring AI】基于SpringAI+Vue3+ElementPlus的QA系統實現(前端)

整理不易&#xff0c;請不要吝嗇你的贊和收藏。 1. 前言 這篇文章是 Spring AI Q&A 系統的前端實現。這篇文章將介紹如何快速搭建一個基于 vue3 ElementPlus 的前端項目&#xff0c;vue3 項目的目錄結構介紹&#xff0c;如何在前端實現流式響應&#xff0c;如何高亮顯示…

企業級API集成方案:基于阿里云函數計算調用DeepSeek全解析

解決方案鏈接&#xff1a;https://www.aliyun.com/solution/tech-solution/deepseek-r1-for-platforms?utm_contentg_1000401616 何為DeepSeek R1 DeepSeek R1模型有諸多技術優勢。高效架構設計使其能更高效提取特征&#xff0c;減少冗余計算&#xff0c;提升數據處理速度、…

K8s學習總結

文章目錄 介紹Kubernetes 核心組件k8s安裝環境安裝組件 常用命令測試1. 創建一個測試應用程序2. 檢查 Pod 是否運行 3. 暴露應用讓外部訪問4. 查看服務的暴露端口5. 訪問 nginx 服務6. 驗證節點調度 如有錯誤&#xff0c;敬請指針&#xff0c;謝謝! 介紹 Kubernetes&#xff0…

前端為什么要使用new Promise包裹一個函數

在前端開發中&#xff0c;使用 new Promise 包裹一個函數主要是為了將原本不支持 Promise 規范的操作轉化為支持 Promise 規范的操作&#xff0c;從而可以更好地處理異步操作&#xff0c;提升代碼的可讀性和可維護性。下面詳細介紹這么做的常見原因和應用場景&#xff1a; 1. …

說下JVM中一次完整的GC流程?

大家好&#xff0c;我是鋒哥。今天分享關于【說下JVM中一次完整的GC流程?】面試題。希望對大家有幫助&#xff1b; 說下JVM中一次完整的GC流程? 1000道 互聯網大廠Java工程師 精選面試題-Java資源分享網 JVM中的一次完整的垃圾回收&#xff08;GC&#xff09;流程可以概括為…

dnslog+sqlmap外帶數據

目錄 爆庫 爆表 爆列 爆數據 sqlmapDNSlog 外帶參數 –dns-domain參數注入 –dns-domain參數為dnslog平臺的域名&#xff08;我們也可以使用本地&#xff09; 爆庫 python sqlmap.py -u "http://127.0.0.1/sqli/less-8/index.php/?id1" -techniqueB -dns-dom…

提升顧客轉化率:融合2+1鏈動模式AI智能名片與S2B2C商城小程序的創新策略

摘要&#xff1a;在數字化轉型的背景下&#xff0c;零售商面臨著提升顧客轉化率的巨大挑戰。本文旨在探討如何通過整合顧客行為數據、21鏈動模式、AI智能名片及S2B2C商城小程序等新興技術與商業模式&#xff0c;來精準定位顧客需求&#xff0c;優化營銷策略&#xff0c;從而提高…

以若依移動端版為基礎,實現uniapp的flowable流程管理

1.前言 此代碼是若依移動端版為基礎&#xff0c;實現flowable流程管理&#xff0c;支持H5、APP和微信小程序三端。其中&#xff0c;APP是在安卓在雷電模擬器環境下完成的&#xff0c;其他環境未測試&#xff0c;此文章中所提及的APP均指上述環境。移動端是需要配合若依前后端分…

《全球網絡安全政策法律發展研究報告 (2024) 》

全球視野&#xff0c;深度剖析 報告以全球視野為出發點&#xff0c;深度剖析了2024年各國在網絡安全政策法律方面的最新進展。從局部區域沖突延宕到關鍵信息基礎設施(關基)安全保護規則的持續細化&#xff0c;從數據安全政策立法的蓬勃發展到個人信息保護立法的不斷完善&#…

細說STM32F407單片機RTC的備份寄存器原理及使用方法

目錄 一、備份寄存器的功能 二、示例功能 三、項目設置 1、晶振、DEBUG、CodeGenerator、USART6 2、RTC 3、NVIC 4、GPIO 及KEYLED 四、軟件設計 1、main.h 2、main.c 3、rtc.c 4、keyled.c、keyled.h 五、運行調試 本實例旨在介紹備份寄存器的作用。本實例繼續使…

建筑行業安全技能競賽流程方案

一、比賽時間&#xff1a; 6月23日8&#xff1a;30分準時到場&#xff1b;9&#xff1a;00&#xff0d;10&#xff1a;00理論考試&#xff1b;10&#xff1a;10-12:00現場隱患答疑&#xff1b;12:00-13&#xff1a;30午餐&#xff1b;下午13&#xff1a;30-15&#xff1a;30現場…

解鎖機器學習核心算法 | 線性回歸:機器學習的基石

在機器學習的眾多算法中&#xff0c;線性回歸宛如一塊基石&#xff0c;看似質樸無華&#xff0c;卻穩穩支撐起諸多復雜模型的架構。它是我們初涉機器學習領域時便會邂逅的算法之一&#xff0c;其原理與應用廣泛滲透于各個領域。無論是預測房價走勢、剖析股票市場波動&#xff0…

JAVA生產環境(IDEA)排查死鎖

使用 IntelliJ IDEA 排查死鎖 IntelliJ IDEA 提供了強大的工具來幫助開發者排查死鎖問題。以下是具體的排查步驟&#xff1a; 1. 編寫并運行代碼 首先&#xff0c;我們編寫一個可能導致死鎖的示例代碼&#xff1a; public class DeadlockExample {private static final Obj…

解決DeepSeek服務器繁忙問題

目錄 解決DeepSeek服務器繁忙問題 一、用戶端即時優化方案 二、高級技術方案 三、替代方案與平替工具&#xff08;最推薦簡單好用&#xff09; 四、系統層建議與官方動態 用加速器本地部署DeepSeek 使用加速器本地部署DeepSeek的完整指南 一、核心原理與工具選擇 二、…

機器學習 - 大數定律、可能近似正確學習理論

一、大數定律&#xff1a; 大數定律是概率論中的一個基本定理&#xff0c;其核心思想是&#xff1a;當獨立重復的隨機試驗次數足夠大時&#xff0c;樣本的平均值會趨近于該隨機變量的期望值。下面從直觀和數學兩個角度來說明這一概念&#xff1a; 1. 直觀理解 重復試驗的穩定…