王老師 結構體 第二講

2021-04-07 07:45:27 字數 1311 閱讀 3345

1.動態申請記憶體塊,原型:

void * malloc(int  x);

功能:申請大小為x的記憶體塊,返回所分配記憶體起始位址或空指標.該空間是在堆中分配的.

釋放記憶體:

void free(void *p);

p所指的記憶體區域一定是由函式malloc分配的.

2.定義新型別名:

typedef 復合說明項

其好處在於:能為c語言中沒有名字的資料型別定義乙個名字.

例如:typedef int t;              t a, b[10];

typedef int *ip;           ip p, *q, r[10]; <==> int *p, **q, *r[10];

typedef int a[10];        a x, y[5], *p;    <==> int x[10], y[5][10], (*p)[10];

typedef int f(int);        f *f;                 <==> int (*f)(int);

c語言中唯一的乙個先使用後定義的情況:

typedef struct node node;

struct node ;

3.鍊錶插入(按值從小到大排列)

示例程式**如下:

#include "stdio.h"

#include "malloc.h"

typedef struct node node;

struct node ;

//鍊錶插入,不正確.

void insert(node *h, int x)

//生成乙個新節點

r = (node *)malloc(sizeof(node));

r->info = x;

if(h != p)else

}//鍊錶插入,法一.

void insert1(node **h, int x)

//生成乙個新節點

r = (node *)malloc(sizeof(node));

r->info = x;

if(*h != p)else

}//鍊錶插入,法二.

node * insert2(node *h, int x)

//生成乙個新節點

r = (node *)malloc(sizeof(node));

r->info = x;

if(h != p)else

return h;

}//列印鍊錶

void print(node *h)

}void main()

第二講 線性結構

1,順序儲存 線性表是零個或多個資料元素的有限序列,元素之間有順序,且第乙個元素無前驅,最後乙個元素沒有後繼,其它的元素都有乙個前驅乙個後繼,就是我們說的一對一。我們先來談一談順序儲存結構,順序儲存是通過一維陣列來實現的,且順序結構儲存需要三個屬性,儲存空間的起始位置,線性表的最大儲存容量,以及線性...

第二講線性結構

簡單來說像這樣的猶如一條線的結構就屬於線性結構常見有我們熟知的陣列還有單鏈表。在學資料結構之前我們對陣列就很了解了,最簡單的就是一維陣列,一維陣列也是最簡單的線性結構。優點 1.訪問方便,之間訪問下標對應元素即可 2.寫起來也方便用起來也方便看著也舒服 缺點 1.在中間位置插入元素時,其後所以元素都...

第二講 資料結構

include using namespace std const int n 100010 int e n ne n head 1,idx 向煉表頭插入乙個數x o 1 void add to head int x 在第k個插入的數後面插入乙個數x o 1 要用鍊錶那就是o n void add ...