線性表之雙鏈表的基本操作(c語言)
阿新 • • 發佈:2021-01-17
目錄
概念
- 雙鏈表的每個資料結點中都有兩個指標,分別指向後繼結點和前驅結點。
儲存結構
typedef struct LNode{
int data;//資料域
struct LNode *next,*prior;//指標域
}LNode,*LinkList;
- LinkList和LNode是不同名字的同一個指標型別。
- *LinkList型別的指標變數head表示它是單鏈表的頭指標。
- LNode型別的指標變數p表示它是指向某一結點的指標。
初始化
bool InitLinklist( LinkList &L)
{
L=(LNode*)malloc(sizeof(LNode));//分配頭結點
if(L==NULL)return false;
L->prior=NULL;
L->next=NULL;
return true;
}
插入
bool InsertNode(LNode *p,LNode *s)
{
if(s==NULL||p==NULL)return false;
s->next=p->next;
if(p->next!=NULL)
p->next->prior=s;
s-> prior=p;
p->next=s;
return true;
}
刪除
刪除後繼結點
bool DeleteNode(LNode *p)
{
if(p==NULL)return false;
LNode *q=p->next;
if(q=NULL)return false;
p->next=q->next;
if(q->next!=NULL)
q->next->prior=p;
free(q);
return true;
}
銷燬連結串列
bool DestroyNode(LinkList & L)
{
while(L->next!=NULL)//呼叫刪除函式,迴圈刪除頭結點的後繼結點
DeleteNode(L);
free(L);
L=NULL;
return true;
}