7.22數據結構——順序表

文章目錄

  • 一、思維導圖
  • 二、實現順序表的功能代碼
    • head.h
    • test.c
    • main.c

一、思維導圖

在這里插入圖片描述

二、實現順序表的功能代碼

head.h

#ifndef __HEAD_H__
#define __HEAD_H__#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//數組的最大長度
#define MAXSIZE 5enum type
{FALUSE=-1,//用于失敗返回的SUCCESS//用于成功返回的
};
//給數據元素的類型起別名
typedef int datatype;
//定義順序表的結構體
//
typedef struct sqlist
{//數據元素datatype data[MAXSIZE];//順序表長度:實際的元素個數 int len;
}*sqlist;//創建順序表
sqlist create_sqlist();
//尾部插入
int insert_rear(sqlist list,datatype element);
//循環輸出
int output(sqlist list);
//尾刪
int delate_rear(sqlist list);
//按下標查找
int search_index(sqlist list,datatype index);
//按下標刪除
int delate_index(sqlist list,datatype index);
//按下標修改
int change_index(sqlist list,int index,int element);
//按下標插入
int insert_index(sqlist list,int index,int element);
//去重
int de_weight(sqlist list);
//順序表排序
int sort(sqlist list);
//按元素查找
int search_yuansu(sqlist list,int number);
//按元素刪除
int delate_yuansu(sqlist list,int number);
//按元素修改
int change_yuansu(sqlist list,int number,int element);#endif

test.c

#include "head.h"//順序表內存申請
sqlist create_sqlist()
{sqlist list=(sqlist)malloc(sizeof(struct sqlist));if(NULL==list){return NULL;}//堆區內存申請成功//對數據元素清0bzero(list->data,sizeof(list->data));//對順序表長度清0list->len=0;//返回順序表return list;
}//順序表尾部插入
int insert_rear(sqlist list,datatype element)
{//1.判斷順序表是否為滿//2.判斷順序表是否為NULLif(NULL==list||list->len==MAXSIZE){printf("sqlist full..\n");return FALUSE;}//3.在順序表尾部插入list->data[list->len]=element;list->len++;return SUCCESS;
}//循環打印順序表
int output(sqlist list)
{//1.判斷順序表是否為空//2.判斷順序表是否為NULLif(list==NULL||list->len==0){printf("output error...\n");return FALUSE;}//循環輸出for(int i=0;i<list->len;i++){printf("%d\t",list->data[i]);}putchar(10);
}//尾刪
int delate_rear(sqlist list)
{//判斷順序表是否為空//判斷順序表是否為NULLif(list==NULL||list->len==0){printf("delate_rear error..\n");return FALUSE;}//刪除list->len--;return SUCCESS;
}//按下標查找
int search_index(sqlist list,datatype index)
{//判斷順序表是否為空//判斷順序表是否為NULLif(list==NULL||list->len==0||index<0||index>=list->len){printf("search_index error...\n");return FALUSE;}//輸出查找的值printf("%d\n",list->data[index]);return SUCCESS;
}//按下標刪除
int delate_index(sqlist list,datatype index)
{//判斷順序表是否為空//判斷順序表是否為NULL//判斷是否在順序表空間內if(list==NULL||list->len==0||index<0||index>=list->len){printf("delate_index error...\n");return FALUSE;}for(int i=index;i<list->len;i++){list->data[i]=list->data[i+1];}list->len--;return SUCCESS;
}//按下標修改
int change_index(sqlist list,int index,int element)
{//判斷順序表是否為空//判斷順序表是否為NULL//判斷是否在順序表空間內if(list==NULL||list->len==0||index<0||index>=list->len){printf("change_index error...\n");return FALUSE;}list->data[index]=element;return SUCCESS;
}//按下標插入
int insert_index(sqlist list,int index,int element)
{//判斷順序表是否為NULL//判斷是否在順序表空間內if(list==NULL||index<0||index>list->len){printf("insert_index error...\n");return FALUSE;}if(list->len==MAXSIZE){printf("內存已滿無法插入\n");return FALUSE;}list->len++;for(int i=list->len;i>index;i--){list->data[i-1]=list->data[i-2];}list->data[index]=element;return SUCCESS;
}//去重
int de_weight(sqlist list)
{//判斷順序表是否為空//判斷順序表是否為NULLif(list==NULL||list->len==0){printf("de_weight error..\n");return FALUSE;}for(int i=0;i<list->len;i++){for(int j=i+1;j<list->len;j++){if(list->data[i]==list->data[j]){delate_index(list,j);j--;}}}return SUCCESS;
}//順序表排序
int sort(sqlist list)
{//判斷順序表是否為空//判斷順序表是否為NULLif(list==NULL||list->len==0){printf("sort error..\n");return FALUSE;}for(int i=0;i<list->len-1;i++){for(int j=0;j<list->len-i-1;j++){if(list->data[j]>list->data[j+1]){int temp=list->data[j];list->data[j]=list->data[j+1];list->data[j+1]=temp;}}}return SUCCESS;
}//按元素查找
int search_yuansu(sqlist list,int number)
{//判斷順序表是否為空//判斷順序表是否為NULLif(list==NULL||list->len==0){printf("sort error..\n");return FALUSE;}for(int index=0;index<list->len;index++){if(list->data[index]==number){return index;}}return FALUSE;
}
//按元素刪除
int delate_yuansu(sqlist list,int number)
{//判斷順序表是否為空//判斷順序表是否為NULLif(list==NULL||list->len==0){printf("delate_yuansu error..\n");return FALUSE;}int index=search_yuansu(list,number);delate_index(list,index);return SUCCESS;
}
//按元素修改
int change_yuansu(sqlist list,int number,int element)
{	//判斷順序表是否為空//判斷順序表是否為NULLif(list==NULL||list->len==0){printf("change_yuansu error..\n");return FALUSE;}int index=search_yuansu(list,number);change_index(list,index,element);return SUCCESS;
}

main.c

#include "head.h"
int main(int argc, const char *argv[])
{//1.定義一個順序表sqlist list=create_sqlist();datatype element;//2.順序表尾部插入for(int i=0;i<MAXSIZE;i++){printf("請輸入一個值:");scanf("%d",&element);insert_rear(list,element);}//3.循環打印順序表 output(list);//4.尾部刪除delate_rear(list);delate_rear(list);printf("尾刪之后;");output(list);//5.按下標查找	int index;printf("輸入要查找的下標的值:");scanf("%d",&index);search_index(list,index);//6.按下標修改printf("輸入要修改的下標:");scanf("%d",&index);printf("輸入要改成的值:");scanf("%d",&element);change_index(list,index,element);output(list);//7.按下標刪除printf("輸入要刪除值的下標:");scanf("%d",&index);delate_index(list,index);output(list);//8.按下標插入printf("輸入要插入值的下標:");scanf("%d",&index);printf("輸入要插入的值:");scanf("%d",&element);insert_index(list,index,element);//9.去重0de_weight(list);printf("去重后的結果:");output(list);//10.順序表排序sort(list);printf("順序表排序后的結果:");output(list);//11.按元素查找index=search_yuansu(list,14);printf("元素查找的下標:");printf("%d\n",index);//12.按元素刪除delate_yuansu(list,14);printf("按元素刪除后的結果:");output(list);//13.按元素修改change_yuansu(list,14,54);printf("按元素修改后的結果:");output(list);//14.順序表釋放內存free(list);list=NULL;return 0;
}

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

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

相關文章

【如何無限制免費試用 IDEA || Pycharm(JB 全家桶)】

如何無限制免費試用 IDEA || Pycharm(JB 全家桶) 一、目標:解決 JB 全家桶試用時長痛點 如果你是程序員,大概率用過 JetBrains 家的 IDE——IDEA 寫 Java、Pycharm 寫 Python、WebStorm 做前端,體驗確實頂流,但官方 30 天試用到期后,動輒幾千的年費實在讓人肉痛。 咱…

Qt(資源庫和按鈕組)

這一節是對上一節的補充&#xff0c;上一節提到QLabel類和QAabstractButton類&#xff0c;這節內容&#xff1a;1.如設置資源庫&#xff0c;使用資源設置圖片2. 使用按鈕組管理多個按鈕。一、資源庫1. 資源庫作用Qt的資源庫&#xff08;Resource System&#xff0c;.qrc文件&am…

一道檢驗編碼能力的字符串的題目

#include<iostream> #include<vector> #include<string> using namespace std; int bNum0,gNum0; int findEnd(string& s,int si){int lens.size();//當前字母在哪個字符串中,存入comp中string comp;if(s[si]b||s[si]o||s[si]y){comp"boy";bNu…

UniApp X 網絡請求避坑指南:從 JS 到 UTS 的 JSON 數據處理全解析

在 UniApp 開發中&#xff0c;我們經常需要通過 uni.request 獲取服務器返回的 JSON 數據&#xff0c;并將其綁定到頁面或進行邏輯處理。但在 UniApp X&#xff08;基于 UTS&#xff09; 中&#xff0c;由于引入了 強類型語言特性&#xff0c;處理 JSON 數據的方式與 JS 有明顯…

iOS 網絡請求常用依賴庫與系統自帶 API 介紹與示例

iOS 網絡請求常用依賴庫與系統自帶 API 介紹與示例 在 iOS 開發中&#xff0c;進行網絡請求是幾乎所有應用都不可或缺的功能。開發者有多種選擇來處理網絡通信&#xff0c;從系統自帶的 URLSession 到各種流行的第三方庫。下面我將為您介紹 URLSession、AFNetworking、Alamofir…

JavaScript 中 let 在循環中的作用域機制解析

一、let在循環中的特殊性 let作為ES6引入的塊級作用域聲明&#xff0c;在循環結構中存在特殊行為&#xff0c;其核心區別于var的函數作用域特性。理解這一特性對于編寫正確的閉包邏輯至關重要。 在 ECMAScript 規范里&#xff0c;let聲明的變量具有塊級作用域特性&#xff0c;這…

@Subscribe@AllowConcurrentEvents解析這兩個注解

@Subscribe@AllowConcurrentEvents解析這兩個注解 @Subscribe 和 @AllowConcurrentEvents 是 Guava EventBus(Google 開源的事件總線框架)中用于處理事件訂閱的注解,主要用于實現組件間的解耦通信。下面分別解析: 1. @Subscribe 注解 作用:標記一個方法為事件訂閱者方法,…

好看的小程序推廣單頁HTML源碼 可用作導航頁

內容目錄一、詳細介紹二、效果展示1.部分代碼2.效果圖展示三、學習資料下載一、詳細介紹 響應式的小程序推廣單頁HTML源碼。這個設計采用了現代化的UI元素&#xff0c;包含吸引人的標題、特性展示、二維碼區域和行動號召按鈕。 二、效果展示 1.部分代碼 代碼如下&#xff0…

華為倉頡編程語言實踐體驗

華為倉頡編程語言實踐體驗 目前華為倉頡編程語言因為其推出時間較短&#xff0c;生態系統不完善。官網資料權威&#xff0c;但比較龐大難懂。快速實驗入門&#xff0c;是學習一門編程語言的法寶。網上靠譜的資料稀少&#xff0c;特此撰文介紹&#xff0c;幫助初學者減少挫折感&…

YOLOv11實戰,使用YOLOv11訓練自己的數據集和推理(附YOLOv11網絡結構圖)

2024年計算機視覺領域的顛覆性突破,YOLOv11以22%的參數量減少和0.3%的mAP提升重新定義實時目標檢測的邊界 本文將手把手帶你完成YOLOv11的全流程實戰,包含環境配置、數據準備、模型訓練、推理部署及創新優化方案,并深度解析其網絡架構設計思想。 一、YOLOv11核心創新解析 …

macOS xcode打包ios測試ipa應用包

可以參考&#xff1a; https://blog.csdn.net/sinat_34104446/article/details/133684756 過程中遇到很多稀奇古怪的報錯&#xff0c;基本重啟電腦即可解決。。。在我按照上面的步驟申請并導入新證書后&#xff0c;還遇到了一個問題&#xff1a;解決辦法&#xff1a; https://b…

STM32基礎知識學習筆記:ICODE、DCODE、DMA等常見名詞的解釋

基于AI生成內容。 ICODEICODE&#xff1a;指令總線&#xff08;Instruction Bus&#xff09; 主要用于處理 CPU 對程序指令的讀取操作。它是 STM32 存儲架構中重要的組成部分&#xff0c;與數據總線&#xff08;DCODE&#xff09;、系統總線&#xff08;System Bus&#xff09;…

誰將統治AI游戲時代?騰訊、網易、米哈游技術暗戰

游戲行業的“產能天花板”正被AI技術轟然擊穿。騰訊、網易、米哈游……所有的游戲廠商都在押注AI&#xff0c;騰訊混元發布混元游戲視覺生成平臺&#xff0c;分鐘級生成高精度游戲角色&#xff1b;網易《蛋仔派對》借AI實現UGC創作平民化&#xff1b;米哈游新作更以實時多模態對…

基于springboot的工商局商家管理系統

博主介紹&#xff1a;java高級開發&#xff0c;從事互聯網行業六年&#xff0c;熟悉各種主流語言&#xff0c;精通java、python、php、爬蟲、web開發&#xff0c;已經做了六年的畢業設計程序開發&#xff0c;開發過上千套畢業設計程序&#xff0c;沒有什么華麗的語言&#xff0…

ABP VNext + Razor 郵件模板:動態、多租戶隔離、可版本化的郵件與通知系統

&#x1f680; ABP VNext Razor 郵件模板&#xff1a;動態、多租戶隔離、可版本化的郵件與通知系統 &#x1f4da; 目錄&#x1f680; ABP VNext Razor 郵件模板&#xff1a;動態、多租戶隔離、可版本化的郵件與通知系統&#x1f31f; 一、TL;DR&#x1f4c8; 二、系統流程圖…

瘋狂星期四第19天運營日記

網站運營第19天&#xff0c;點擊觀站&#xff1a; 瘋狂星期四 crazy-thursday.com 全網最全的瘋狂星期四文案網站 運營報告 今日訪問量 今日訪問量42&#xff0c;瘋狂之后的冷靜&#xff0c;落差太大~~ 今日搜索引擎收錄情況 必應仍然是24條記錄&#xff0c;無變化 百度0收…

康養休閑旅游服務虛擬仿真實訓室:賦能人才培養的創新路徑

在康養休閑旅游行業數字化轉型與職業教育改革的雙重驅動下&#xff0c;康養休閑旅游服務虛擬仿真實訓室已成為連接課堂教學與崗位實踐的關鍵樞紐。它通過虛擬仿真技術重構康養服務場景&#xff0c;為學生打造沉浸式實踐平臺&#xff0c;在人才培養模式創新中發揮著不可替代的作…

python辦自動化--讀取郵箱中特定的郵件,并下載特定的附件

系列文章目錄 python辦公自動化–數據可視化&#xff08;pandasmatplotlib&#xff09;–生成條形圖和餅狀圖 python辦公自動化–數據可視化&#xff08;pandasmatplotlib&#xff09;–生成折線圖 python辦公自動化–數據可視化&#xff08;pandas讀取excel文件&#xff0c;m…

清理DNS緩存

Cloudflarehttps://1.1.1.1/purge-cacheGooglehttps://dns.google/cacheOpenDNShttps://cachecheck.opendns.comLinux DNS緩存sudo systemd-resolve --flush-caches 或 sudo /etc/init.d/nscd restartWindows DNS緩存ipconfig /flushdnsmacOS DNS緩存sudo dscacheutil -flushca…

用 Python 寫你的第一個爬蟲:小白也能輕松搞定數據抓取(超詳細包含最新所有Python爬蟲庫的教程)

用 Python 寫你的第一個爬蟲&#xff1a;小白也能輕松搞定數據抓取&#xff08;超詳細包含最新所有Python爬蟲庫的教程&#xff09; 摘要 本文是一篇面向爬蟲愛好者的超詳細 Python 爬蟲入門教程&#xff0c;涵蓋了從基礎到進階的所有關鍵技術點&#xff1a;使用 Requests 與…