【数据结构】—顺序表的插入、删除、查找操作
生活随笔
收集整理的這篇文章主要介紹了
【数据结构】—顺序表的插入、删除、查找操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define InitSize 10 //默認的最大長度
typedef struct{int *data; //指示動態分配數組的指針 int MaxSize; //順序表的最大容量 int length; //順序表的當前長度
}SeqList;void InitList(SeqList &L){//用malloc函數申請一片連續的存儲空間 L.data=(int *)malloc(InitSize*sizeof(int));L.length=0;L.MaxSize=InitSize;
} //增加動態數組的長度
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]; //將數據復制到新區域 }L.MaxSize=L.MaxSize+len;//順序表最大長度增加len free(p); //釋放原來的內存空間
}//插入操作
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;
}//按值查找順序表,找到第一個元素值等于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; //聲明一個順序表 InitList(L); //初始化順序表 IncreaseSize(L,5);//插入元素 printf("請輸入:\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;
}
輸出:
不懂請留言,謝謝!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【数据结构】—顺序表的插入、删除、查找操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言学习之通过指针变量调用它所指向的函
- 下一篇: vs2013配置opencv2.4.9后