單鏈表的鏈式存儲的兩種插入方式

/* 頭插法創建單鏈表示例 */指針

void CreateListHead(LinkList *L, int n)
{
LinkList p;
int i;變量

srand(time(0)); // 初始化隨機數種子隨機數

*L = (LinkList)malloc(sizeof(Node));
(*L)->next = NULL;List

for( i=0; i < n; i++ )
{
p = (LinkList)malloc(sizeof(Node)); // 生成新結點
p->data = rand()%100+1;
p->next = (*L)->next;
(*L)->next = p;
}
}循環

/* 尾插法創建單鏈表演示 */數據類型

void CreateListTail(LinkList *L, int n)
{
LinkList p, r;
int i;im

srand(time(0));
*L = (LinkList)malloc(sizeof(Node));
r = *L;鏈表

for( i=0; i < n; i++ )
{
p = (Node *)malloc(sizeof(Node));
p->data = rand()%100+1;
r->next = p;
r = p; // 備註:初學者可能很難理解這句,重點解釋。
}next

r->next = NULL;
}數據

最後兩句其實就是多增長了一個Node數據類型的變量,用它不停指向最後一個節點。而後在下一次循環中r又幫忙把最後一個節點的Next指針指向新的節點p

相關文章
相關標籤/搜索