郝斌先生のデータ構造の基本知識復習学習ノート
データ構造(ストレージ+オペレーション)
定義:現実に大量で複雑な問題を特定のデータ型と特定のストレージ構造でメインメモリ(メモリ)に保存し、それに基づいてある機能(削除・変更)を実現して実行する対応する操作をアルゴリズムと呼ぶ.
データ構造=個体の記憶+個体の関係の記憶アルゴリズム=記憶データに対する操作
測定アルゴリズムの標準1、時間複雑度大体プログラムが実行する回数、実行する時間ではありません
2、空間複雑度アルゴリズムの実行中に大体使用した最大メモリ
3、難易度
4、頑丈性
基本知識復習ポインタ
配列内の
構造体こうぞうたい:複合データ型ふくごうでーたがた
構造体変数は減算できませんが、互いに値を割り当てることができます.一般構造体変数と構造体ポインタ変数を関数として参照する問題
どうてきわりあて
***借りがあれば返すが、これ以上借りるのは難しくない.***【^(3)~】
関数間メモリの使用
くりを一つあげる
定義:現実に大量で複雑な問題を特定のデータ型と特定のストレージ構造でメインメモリ(メモリ)に保存し、それに基づいてある機能(削除・変更)を実現して実行する対応する操作をアルゴリズムと呼ぶ.
データ構造=個体の記憶+個体の関係の記憶アルゴリズム=記憶データに対する操作
測定アルゴリズムの標準1、時間複雑度大体プログラムが実行する回数、実行する時間ではありません
2、空間複雑度アルゴリズムの実行中に大体使用した最大メモリ
3、難易度
4、頑丈性
基本知識復習ポインタ
# include
int main(void)
{
int i=9;
f(&i);
printf("%d",f);
}
void f(int * p)
{
*p=100;
}
配列内の
a[i]=*(a+i)=*(i+a)
# include
# include
void f(int **q)
{
q=(int *)0xfffffff;
}
int main (void)
{
int i=9;
int *p=&i;
printf("%p/n",p);
f(&p);
printf("%p/n",p);
return 0;
}
構造体こうぞうたい:複合データ型ふくごうでーたがた
# include
struct Student
{
int sid;
char name[20];
int age;
};//
int main(void)
{
struct Student st={1000,"zhangsan",19};
printf("%d %s %d
",st.sid,st.name,st.age);
st.sid=999;
//st.name="list";//error
strcopy(st.name,"list");
st.age=19;
printf("%d %s %d
",st.sid,st.name,st.age);
return 0;
}
# include
struct Student
{
int sid;
char name[20];
int age;
};//
int main(void)
{
struct Student st;
struct Student *pst;
pst=&st;
pst->sid=99;//pst->sid (*pst).sid st.sid;
return 0;
}
構造体変数は減算できませんが、互いに値を割り当てることができます.一般構造体変数と構造体ポインタ変数を関数として参照する問題
# include
# include
struct Student
{
int sid;
char name[200];
int age;
};//
void f(struct Student * pst)
{
(*pst).sid=99;
strcopy(pst->name,"zhangsan");
pst->age=19;
}
void g()
{
printf("%d %s %d
",st.sid,st.name,st.age);
}
void g2(struct Student *pst)
{
printf("%d %s %d
",pst->sid,pst->name,pst->age);
}
int main (void)
{
struct Student st;
f(&st);
g(st);
g2(&st)
return 0;
}
どうてきわりあて
# include
# include
int main (void)
{
int a[5]={1,2,3,4,5};
int len;
printf(" :len=");
scanf("%d",len);
// int *pArr=(int *)malloc(sizeof(int)*len);
// *pArr=4;//a[0]=4;
// pArr[1]=10;//a[1]=10;
for (int i=0;i<len;i++)
scanf("%d",&pArr[i]);
for (int i=0;i<len;i++)
printf("%d",&pArr[i]);
free(pArr);//
return 0;
}
# include
# include
int main (void)
{
int a[5]={1,2,3,4,5};
int len;
printf(" :len=");
scanf("%d",len);
// int *pArr=(int *)malloc(sizeof(int)*len);
// *pArr=4;//a[0]=4;
// pArr[1]=10;//a[1]=10;
for (int i=0;i<len;i++)
scanf("%d",&pArr[i]);
for (int i=0;i<len;i++)
printf("%d",&pArr[i]);
free(pArr);//
return 0;
}
***借りがあれば返すが、これ以上借りるのは難しくない.***【^(3)~】
関数間メモリの使用
#include
int main(void)
{
int i=10;
i=f();
printf("i=%d
",i);
for(i=0;i<2000;++i)
{
f();
}
return 0;
}
int f()
{
int j =20;
return j;
}
くりを一つあげる
#include
#include
int main(void)
{
int *p;
f(&p);
...
}
int f(int ** q)
{
*q=(int*)malloc(4);
}
#include
#include
struct Student
{
int sid;
int age;
}
struct Student * CreateStudent()
{
struct Student *p=(struct Student *)malloc(sizeof(struct Student));
p->sid=125;
p->age=169;
return p;
}
void ShowStudent( struct Student *pst)
{
printf("%d,%d",pst->sid,pst->age);
}
int main(void)
{
struct Student *ps;
ps=CreateStudent();
ShowStudent(ps);
return 0;
}