1. 程式人生 > >typedef--資料結構--複雜度分析

typedef--資料結構--複雜度分析

資料結構:

      1.資料的4種邏輯結構:   集合   線性結構   樹形結構   圖

      2.資料儲存:   邏輯關係   和   物理關係

                 順序表:  邏輯相連,實體地址也相連

                 連結串列:  邏輯相連,實體地址不一定相連

      3.線性表包括:    順序表     連結串列

                區分一下陣列和順序表:  陣列主要關注資料的存取; 順序表可實現存,取,插,刪,改等

typedef:

#include<stdio.h>

typedef int Int;
typedef int *pint;

int main()
{
	int a = 10;
	Int b = 20;
	printf("%d,%d\n", a, b);

	int x = 100;
	int *p1 = &x;
	pint p2 = &x;
	printf("%d,%d\n", p1, p2);

	return 0;
}

上述程式碼請個位讀者執行並觀察結果,可以得到這樣的結論:

typedef int Int; 的含義就是將 int 重新命名為 Int, 因此printf("%d,%d\n", a, b);的結果為兩個整數;

typedef int *pint; 的含義就是將  int *(指標型別) 重新命名為 pint ,即用pint 宣告一個變數和 int* 宣告一個型別等價;

關於typedef有一個好記的方法(僅供參考,如果有更好的辦法可以交流):

       比如: int Int; 意思是定義一個整形的Int 變數,加上 typedef 後就將 Int 提升為int 這種資料型別

                那麼 typedef int *pint; 就是將pint 提升為int * 這種資料型別

請理解下列程式碼:

typedef struct student
{
	int name[20];
	int age;
}student; //定義一個結構體並且重新命名為student

//定義一個 struct student 變數
struct student stu1;

//定義一個 struct student 變數
student stu2; 

//定義一個 struct student 型別的指標變數
student *stu3;

在很多資料結構書中我們可以看到下列型別的結構體:

typedef struct student
{
	int name[20];
	int age;
}student,*pstudent;

student *stu1;
pstudent stu2;

/*
* 其實就是將pstudent升級為student *這種指標型別
* 所以下面的 stu1 和 stu2是同類型的指標變數
*/