演算法與資料結構 - 順序表的操作
阿新 • • 發佈:2020-10-14
手敲的程式碼:
#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,intval){ 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]之類的)很容易完成
執行結果: