我最近在用c作為入門資料結構的程式語言,使用教材是《大話資料結構》。稍微比清華嚴蔚敏寫的易讀。就是有些例子舉的過於通俗了,可以略微刪減一些(或一大段)。下面**會把我寫的和書裡寫的對比出來。初學感覺個人程式魯棒性不夠。聽說此書**保持嚴蔚敏**,有一些問題。初學者沒看出來。望大家指出。
1.線性表linear
定義結構體
//葉大叔第一次資料結構:線性表linear
//c語言實現
#include #define maxzin 20
#define state int //之後函式返回型別可以任改
#define ok 1
#define error0 0
#define error1 -1
#define error2 -2
typedef structlinear;//定義結構體,取名linear:線性表
教材**
typedef int elemtype;
typedef struct sqlist;
獲取元素**
state getelement(linear l,int i,state *p)//獲得結構體,位置資訊,指標用於顯示時用
} //o(n)= 1 高效
教材獲取元素**
status getelem(sqlist l,int i,elemtype *e)
//o=1
插入元素**
state insertelement(linear *l,int i,state p)//i為位置資訊,插入數在i~i+1之間,p為插入數
l->a[i-1] = p;
l->length++;
return ok;
} } //o(n) = n
教材插入**
status listinsert (sqlist *l,int i,elemtype e)
l->data[i-1] = e;
l->length++;
return ok;
}//o=n
刪除元素**
state deleteelement(linear *l,int i)//i為位置資訊
l->length--;
}return ok;
} //o(n)= n
教材刪除元素**
status listdelete(sqlist *l,int i,elemtype *e)
l->length--;
return ok;
}//o=n
總**+很醜的測試
//葉大叔第一次資料結構:線性表linear
//c語言實現
#include #define maxzin 20
#define state int //之後函式返回型別可以任改
#define ok 1
#define error0 0
#define error1 -1
#define error2 -2
typedef structlinear;//定義結構體,取名linear:線性表
state getelement(linear l,int i,state *p)//獲得結構體,位置資訊,指標用於顯示時用
} //o(n)= 1 高效
/*反思:並沒有考慮最開始length為0的情況 */
state insertelement(linear *l,int i,state p)//i為位置資訊,插入數在i~i+1之間,p為插入數
l->a[i-1] = p;
l->length++;
return ok;
} } //o(n) = n
state deleteelement(linear *l,int i)//i為位置資訊
l->length--;
} return ok;
} //o(n)= n
//少設計了乙個功能
int main(void)
,5};
linear *l = &big_uncle;
int *p=null,i;
i = 0;
p = &i;//大叔不知道為什麼只能這樣操作,而不能直接指向null ??
insertelement(l,2,520);
deleteelement(l,2);
getelement(big_uncle,2,p);
printf("%d",*p);
return 0;
}
線性表c語言實現
lineartable.h pragma once 線性表的實現 define maxsize 20 define ok 1 define error 2 typedef struct list list t 線性表初始化 void initlist list t list 根據下表查詢資料 int...
C語言實現線性表
include include define maxsize 100 定義線性表最大長度 定義順序表 typedef struct seqlist 初始化順序表 void initlist seqlist l 建立順序表 intcreatlist seqlist l,int a,int n for ...
線性表 c語言實現(2)
有些方法在上篇 這裡只對 compare locateelem mergelist insrandlinst 和更新的main 作說明。1比較兩個元素是否相等 int compare int e1,int e2 else return0 int locateelem sqlist l,int e r...