4 帶頭結點的雙鏈表

2021-10-10 06:07:52 字數 2770 閱讀 1054

)//沒找到 「尾插法」

else

if(pk == h->first)

// 找到的是第乙個"頭插法"

else

//中間插入

h->num ++;}

void

delete_x

(head * h, elemtype x)

binode * px = h->first;

while

(px)

px = px->next;}if

(px ==

null

)//沒有找到

if(px == h->first)

//找到的是第乙個

}else

if(px == h->last)

//找到的是最後乙個

else

//刪除中間的結點

free

(px)

; h->num --;}

void

delete_all_x

(head * h, elemtype x)

binode * px = h->first;

binode * ps = h->first;

while(1

) px = px->next;}if

(px ==

null

)//沒有找到

ps = px->next;

if(px == h->first)

//找到的是第乙個

}else

if(px == h->last)

//找到的是最後乙個

else

//刪除中間的結點

free

(px)

; h->num --;}

}void

print

(head * h)

if(h->first ==

null

)//順序輸出

binode * pk = h->first;

while

(pk)

printf

("\n");

//逆序輸出

binode * pr = h->last;

while

(pr)

printf

("\n--------------\n");

//列印結點的個數

printf

("num == %d "

,h->num)

;printf

("\n--------------\n");

}bilinkedlistwithhead.h

#ifndef __bilinkedlistwithhead_h__

#define __bilinkedlistwithhead_h__

#include

#include

typedef

int elemtype ;

//資料元素的型別

//資料結點

typedef

struct binode

binode;

//頭結點的型別

typedef

struct head

head;

void

print

(head * h)

;void

add_binode

(head * h, binode * p)

;void

delete_x

(head * h, elemtype x)

;void

creat_order_linkedlist

(head * h)

;head *

creat_bilinkedlist_head

(void);

void

delete_all_x

(head * h, elemtype x)

;#endif

main.c

#include

"bilinkedlistwithhead.h"

intmain()

判斷帶頭結點的迴圈雙鏈表是否對稱

include stdafx.h include include includetypedef int type typedef struct lnode 定義鍊錶結點的資料結構 lnode typedef lnode node typedef struct dnode 定義雙鏈表結點的資料結構 d...

帶頭結點的單鏈表

帶頭結點的單鏈表 1 頭結點 在棧區開闢,指標域指向第乙個首元結點,資料域不儲存資料,可以儲存當前結點的個數 2 普通結點 無論是頭結點還是普通結點都是乙個結構體型別,由指標域和資料域組成 指標域指向下乙個結點,儲存下乙個結點的位址 資料域可以設定成聯合體型別,成員由資料元素和結點個數組成,之所以將...

帶頭結點的單鏈表

include include define error printf struct node typedef int elementtype typedef struct node list typedef struct node node struct node list initialize ...