1.seqlist.h文件
創新互聯專注于安岳網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供安岳營銷型網站建設,安岳網站制作、安岳網頁設計、安岳網站官網定制、微信小程序服務,打造安岳網絡公司原創品牌,更為您提供安岳網站排名全網營銷落地服務。#ifndef __SEQLIST_H__
#define __SEQLIST_H__
#define MAX 20 //數組大容量
typedef int datatype; //類型重定義
typedef struct{
datatype data[MAX]; //存儲順序表的數組
int len; //順序表的長度
}seqList;
//創建順序表
seqList *list_create();
//判空
int list_empty(seqList *L);
//判滿
int list_full(seqList *L);
//添加元素
int list_add(seqList *L,datatype e);
//遍歷
void list_show(seqList *L);
//任意位置插入
int list_insert_pos(seqList *L,int pos,datatype e);
//任意位置刪除
int list_delete_pos(seqList *L,int pos);
//按位置修改
int list_update_pos(seqList *L,int pos,datatype new_e);
//按值修改
int list_update_var(seqList *L,datatype var1,datatype var2);
//按位置查找
int list_search_pos(seqList *L,int pos);
//按值查找
int list_search_e(seqList *L,datatype e);
//排序
int list_sort(seqList *L);
//求最值
int list_max_min(seqList *L);
//去重
int list_repent(seqList *L);
//銷毀
void list_free(seqList *L);
#endif
2、seqlist.c文件
#include#include#include#include "seqlist.h"
seqList *list_create(){
seqList *L=(seqList*)malloc(sizeof(seqList));
if(NULL==L){
printf("創建失敗\n");
return NULL;
}
//順序表初始化
L->len=0;
//數組初始化
memset(L,0,sizeof(datatype)*MAX);
printf("創建成功\n");
return L; //將創建好的順序表返回
}
//判空
int list_empty(seqList *L){
return L->len==0;
}
//判滿
int list_full(seqList *L){
return L->len==MAX;
// return L->len==MAX ? 1:0;
}
//添加元素
int list_add(seqList *L,datatype e){
//判斷邏輯
if(list_full(L)){
printf("表滿,添加失敗\n");
return 0;
}
//添加邏輯
L->data[L->len]=e;
//表的變化
L->len++;printf("添加成功\n");
}
//遍歷
void list_show(seqList *L){
//判斷邏輯
if(NULL==L||list_empty(L)){
printf("遍歷失敗\n");
return;
}
//遍歷邏輯
printf("此時順序表中的元素分別是:");
for(int i=0;ilen;i++){
printf("%d\t",L->data[i]);
}
putchar(10);
}
//任意位置插入
int list_insert_pos(seqList *L,int pos,datatype e){
//判斷邏輯
if(list_full(L)||pos<0||pos>(L->len)){
printf("插入失敗\n");
return 0;
}
//騰空過程
for(int i=L->len-1;i>=pos;i--){
L->data[i+1]=L->data[i];
}
//插入數據
L->data[pos]=e;
printf("插入成功\n");
//表長變換
L->len++;
return 0;
}
//按位置刪除
int list_delete_pos(seqList *L,int pos){
//判斷邏輯
if(list_empty(L)||pos<0||pos>=(L->len)){
printf("刪除失敗\n");
return 0;
}
//刪除過程
for(int i=pos;ilen;i++){
L->data[i]=L->data[i+1];
}
//表長變換
L->len--;
printf("刪除成功\n");
return 0;
}
//按位置修改
int list_update_pos(seqList *L,int pos,datatype new_e){
//判斷邏輯
if(list_empty(L)||pos<0|pos>=(L->len)){
printf("修改失敗\n");
return 0;
}
//修改過程
L->data[pos]=new_e;
printf("修改成功\n");
return 0;
}
//按值修改
int list_update_var(seqList *L,datatype var1,datatype var2){
int a=0;
//判斷邏輯
if(list_empty(L)){
printf("順序表為空\n");
return -1;
}
//修改過程
for(int i=0;ilen;i++){
if(L->data[i]==var1){
L->data[i]=var2;
a=1;
}
}
if(a==1){
printf("修改成功\n");
return 1;
}
else{
printf("沒有找到該值,修改失敗\n");
return 0;
}
}
//按位置查找
int list_search_pos(seqList *L,int pos){
//判斷邏輯
if(list_empty(L)){
printf("順序表為空\n");
return -1;
}
if(pos<0||pos>=L->len){
printf("位置不合法,查找失敗\n");
return 0;
}
//查找過程
else{
printf("該值為%d\n",L->data[pos]);
return 1;
}
}
//按值查找
int list_search_e(seqList *L,datatype e){
//判斷邏輯
if(list_empty(L)){
printf("順序表為空,查找失敗\n");
return -1;
}
//查找過程
int a=0;
for(int i=0;ilen;i++){
if(L->data[i]==e){
printf("查找到的下標為%d\n",i);
a=1;
}
}
if(a==1){
return 1;
}
else{
return 0;
}
}
//排序
int list_sort(seqList *L){
datatype temp;
//判斷邏輯
if(list_empty(L)){
printf("順序表為空\n");
return 0;
}
//排序過程
for(int i=0;ilen-1;i++){
for(int j=0;jlen-1-i;j++){
if(L->data[j]>L->data[j+1]){
temp=L->data[j];
L->data[j]=L->data[j+1];
L->data[j+1]=temp;
}
}
}
printf("排序成功\n");
return 1;
}
//求最值
int list_max_min(seqList *L){
datatype max=L->data[0];
datatype min=L->data[0];
//判斷邏輯
if(list_empty(L)){
printf("順序表為空\n");
return 0;
}
//求值過程
for(int i=0;ilen;i++){
if(maxdata[i]){
max=L->data[i];
}
}
for(int i=0;ilen-1;i++){
if(min>L->data[i]){
min=L->data[i];
}
}
printf("大值為%d,最小值為%d\n",max,min);
return 1;
}
//去重
int list_repent(seqList *L){
//判斷邏輯
if(list_empty(L)){
printf("順序表為空\n");
return 0;
}
//去重過程
for(int i=0;ilen-1;i++){
for(int j=i+1;jlen;j++){
if(L->data[i]==L->data[j]){
for(int k=j;klen-1;k++){
L->data[k]=L->data[k+1];
}
L->len--;
j--;
}
}
}
}
//銷毀
void list_free(seqList *L){
if(L!=NULL){
free(L);
L=NULL;
printf("銷毀成功\n");
}
}
3、main.c文件
#include#include"seqlist.h"
int main(int argc, const char *argv[])
{
seqList *L=list_create();
if(NULL==L){
return -1;
}
//調用添加
list_add(L,12);
list_add(L,18);
list_add(L,25);
list_add(L,50);
list_add(L,50);
list_add(L,25);
list_add(L,25);
//調用遍歷
list_show(L);
//調用插入
list_insert_pos(L,4,35);
//調用遍歷
list_show(L);
//調用刪除
list_delete_pos(L,4);
//調用遍歷
list_show(L);
//調用按位置修改
list_update_pos(L,3,100);
//調用遍歷
list_show(L);
//調用按值修改
list_update_var(L,12,15);
//調用遍歷
list_show(L);
//調用按位置查找
list_search_pos(L,3);
//調用遍歷
list_show(L);
//調用按值查找
list_search_e(L,25);
//調用遍歷
list_show(L);
//調用排序
list_sort(L);
//調用遍歷
list_show(L);
//調用求最值
list_max_min(L);
//調用去重
list_repent(L);
//調用遍歷
list_show(L);
//調用銷毀
list_free(L);
L=NULL;
//調用遍歷
list_show(L);
return 0;
}
4、結果為
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
本文標題:數據結構作業-創新互聯
文章來源:http://m.newbst.com/article46/dchhhg.html
成都網站建設公司_創新互聯,為您提供虛擬主機、微信小程序、建站公司、外貿網站建設、品牌網站制作、軟件開發
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯