1. 程式人生 > 實用技巧 >演算法與資料結構 - 順序表的操作

演算法與資料結構 - 順序表的操作

手敲的程式碼:

#include <stdio.h>
#include <stdlib.h>
typedef struct table{
    int *pBase;
    int length;
    int cnt;
    }Student;
//Student p1;
init_arr(Student *p,int length){
    p->pBase=(int *)malloc(sizeof(int)*length);
    p->length=length;
    p->cnt=0;}
append_arr(Student *p,int
val){ p->pBase[p->cnt]=val; p->cnt++; } insert_arr(Student *p,int pos,int val){ //在第pos位置插入值 int i; for(i=0;i<p->cnt;i++){ printf("插入前:%d\n",p->pBase[i]); } for(i=p->cnt-1;i>=pos-1;i--){ p->pBase[i+1]=p->pBase[i]; } p
->pBase[pos-1]=val; p->cnt++; for(i=0;i<p->cnt;i++){ printf("插入後:%d\n",p->pBase[i]); } } delete_arr(Student *p,int pos){ //刪除第pos個位置的值 int i; for(i=pos-1;i<=p->cnt-1;i++){ p->pBase[i]=p->pBase[i+1]; } p->cnt--; for(i=0;i<p->cnt;i++){ printf(
"刪除後:%d\n",p->pBase[i]); } } int main() { Student *p1; init_arr(&p1,10); append_arr(&p1,2); append_arr(&p1,3); append_arr(&p1,8); insert_arr(&p1,2,67); delete_arr(&p1,3); return 0; }

順序表的操作,包括初始化、增加元素、插入元素和刪除元素。

結構體Student包含三個成員變數,分別是陣列首地址、總長度和有效長度

由於順序表以陣列形式儲存元素,所以使用陣列的表示式(a[0]之類的)很容易完成

執行結果: