【数据结构】—顺序表的插入、删除、查找操作
生活随笔
收集整理的這篇文章主要介紹了
【数据结构】—顺序表的插入、删除、查找操作
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define InitSize 10 //默認(rèn)的最大長度
typedef struct{int *data; //指示動(dòng)態(tài)分配數(shù)組的指針 int MaxSize; //順序表的最大容量 int length; //順序表的當(dāng)前長度
}SeqList;void InitList(SeqList &L){//用malloc函數(shù)申請(qǐng)一片連續(xù)的存儲(chǔ)空間 L.data=(int *)malloc(InitSize*sizeof(int));L.length=0;L.MaxSize=InitSize;
} //增加動(dòng)態(tài)數(shù)組的長度
void IncreaseSize(SeqList &L ,int len){int *p=L.data;L.data=(int *)malloc((L.MaxSize+len)*sizeof(int));for(int i=0;i<L.length;i++){L.data[i]=p[i]; //將數(shù)據(jù)復(fù)制到新區(qū)域 }L.MaxSize=L.MaxSize+len;//順序表最大長度增加len free(p); //釋放原來的內(nèi)存空間
}//插入操作
bool ListInsert(SeqList &L,int i,int e){if(i<1||i>L.length+1){return false;}if(L.length>=L.MaxSize){return false;}for(int j=L.length;j>=i;j--){L.data[j]=L.data[j-1];}L.data[i-1]=e; //把騰出的空間插入元素eL.length++;return true;
}
//刪除操作
bool ListDelete(SeqList &L,int i,int &e) {if(i<1||i>L.length){return false;}e=L.data[i-1];for(int j=i;j<L.length;j++){L.data[j-1]=L.data[j];}L.length--;return true;
}//按值查找順序表,找到第一個(gè)元素值等于e的位序并返回其位序
int LocateElem(SeqList L, int e) {int i;for (i = 0; i < L.length; i++)if (L.data[i]==e)return i + 1;return 0;
}int main(){int e;SeqList L; //聲明一個(gè)順序表 InitList(L); //初始化順序表 IncreaseSize(L,5);//插入元素 printf("請(qǐng)輸入:\n"); for(int i = 0; i < L.MaxSize; i++){scanf("%d",&e);ListInsert(L,i,e); //(順序表,位序,插入值); }//依次輸出順序表中的元素 for (int i = 0; i < L.length; i++) {printf("data[%d]=%d\n", i, L.data[i]);} //按值查找printf("已找到,6在順序表中的第:%d位\n", LocateElem(L, 6) );//刪除操作 ListDelete(L,3,e);//(順序表,位序,返回的被刪除的元素) printf("刪除元素值為:%d\n",e);return 0;return 0;
}
輸出:
不懂請(qǐng)留言,謝謝!
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的【数据结构】—顺序表的插入、删除、查找操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言学习之通过指针变量调用它所指向的函
- 下一篇: JS数组去重方法记录