標籤: c
null
儲存search
演算法語言
2011-01-27 10:20
11091人閱讀收藏
舉報
題目:建立固定長度的單向鍊錶
程式分析:鍊錶是動態分配儲存空間的鏈式儲存結構,
其包括乙個「頭指標」變數,其中第
0個結點稱為整個鍊錶的頭結點,
頭結點中存放乙個位址,該位址指向乙個元素,頭結點一般不存放具體資料,只是存放第乙個結點的位址。
鍊錶中每乙個元素稱為「結點」,每個結點都由兩部分組成:存放資料元素的資料域和儲存直接後繼儲存位置的指標域。指標域中儲存的即是鍊錶的下乙個結點儲存位置,是乙個指標。多個結點鏈結成乙個鍊錶。
最後乙個結點的指標域設定為空
(null),作為鍊錶的結束標誌,表示它沒有後繼結點。
使用結構體變數作為鍊錶中的結點,因為結構體變數成員可以是數值型別,字元型別,陣列型別,也可以是指標型別,這樣就可以使用指標型別成員來存放下乙個結點的位址,使其它型別成員存放資料資訊。
在建立列表時要動態為鍊錶分配空間,c語言的庫函式提供了幾種函式實現動態開闢儲存單元。
malloc()函式實現動態開闢儲存單元:
malloc函式原型為:void *malloc(unsigned int size);
其作用是在記憶體的動態儲存區中分配乙個長度為size的連續空間,函式返回值是乙個指向分配域起始位址的指標(型別為void)。如果分配空間失敗(如,記憶體空間不足),則返回空間指標(null)
**如下:
#include
#include
struct lnode
;/*上面只是定義了乙個結構體型別,並未實際分配記憶體空間
只有定義了變數才分配記憶體空間*/
struct lnode *creat(int n)
else
p2->next=null;/*尾結點的後繼指標為null(空)*/
}return head;/*返回鍊錶的頭指標*/
}void main()
}
題目:建立雙向鍊錶
程式分析:雙向鍊錶的結點有兩個指標域,乙個指向其直接後繼,另乙個指向其直接前驅。其中第乙個結點的前驅為
null(頭結點為第0個結點),最後乙個結點的後繼為null。
**如下:
#include
#include
#include
typedef struct node
stud;
/*雙鏈表的結構定義*/
stud *creat(int n)/*建立雙鏈表函式*/
p->next=null;/*雙鏈表的最後乙個結點的後繼指向null*/
return(h);
}
stud *search(stud *h,char *x)/*查詢*/
printf("資訊未找到/n");
}
void del(stud *p)/*刪除*/
void dip(stud *p)
/*輸出雙鏈表*/
}void main()
題目:建立迴圈鍊錶
程式分析:迴圈鍊錶與普通鍊錶的操作基本一致,
只是鍊錶中最後乙個結點的指標域指向頭結點,是鍊錶形成乙個環,
從表中的任一結點出發均可找到表中的其它結點
在演算法中迴圈遍歷鍊錶是判斷條件不再是p->next是否為空,
而是是否等於鍊錶的頭指標。
**如下:
#include
#include
typedef struct student
lnode,*linklist;
/*定義鍊錶的結構體型別*/
linklist creat(void)
p2->next=head;/*鍊錶的最後乙個結點的後繼指向頭結點*/
return head;
}
void main()
printf("/n/n");
}
C 建立鍊錶
自己儲存一下,建立鍊錶的程式,省的以後每次建立鍊錶的時候,還需要重新在寫。通過下面的 建立的鍊錶節點數為10,每個節點儲存的數為其下標即 0 9 這裡要注意一點,在void createlist listnode phead 的時候,用的是指標引用,因為在main中head並沒有開闢空間,如果在cr...
簡單鍊錶的建立和遍歷
直接貼 include using namespace std struct node 定義結點結構型別 node create 建立鍊錶的函式,返回表頭 void showlist node head 遍歷鍊錶的函式,引數為表頭 int main node create else 否則 pend ...
(C )鍊錶的建立解析
include using namespace std 建立乙個單鏈表 struct listnode void createlist listnode phead int main 1.一開始 使得指標 p 的位址與 phead 的位址相同 listnode p phead 2.讓 p next ...