資料結構之鍊錶操作

2022-05-10 02:17:52 字數 2458 閱讀 1438

面試中單鏈表的相關操作也是常考的內容,本博文也是之前學習時的筆記,在此記錄下來,以便日後用到,同時歡迎批評指正。

一、基本操作typedef struct lnode

2.鍊錶的銷毀

void

destorylist(linklist l)        

else

l->next = ptemp;}}

3.鍊錶的判空

bool

listempty(linklist l)

else

return false;

}    

4.鍊錶的長度

int listlength(linklist l)                

return nodecount;

}5.鍊錶的索引

int getelem(linklist l,int i,int* e)        

if(!ptemp || j>i)

*e = ptemp->data;

return *e;    

}6.鍊錶的插入

void insert(linklist l,int i,int e)

if(!ptemp || j>i-1)

ins = (linklist)malloc(sizeof(lnode));

if(ins==null) printf("

allocate memory error!\n

");ins->data = e;

ins->next = ptemp->next;

ptemp->next = ins;            

}7.鍊錶的刪除

void delete(linklist l,int i,int e)

if(!(ptemp->next) || j>i-1) 

del = ptemp->next;

ptemp->next = del->next;

e = del->data;

free(del);

}8. 鍊錶的建立void

createlist(linklist &l,

intn)

l->next=null;

for( i=0;isizeof(lnode));

scanf(&p->data);

p->next=l->next;

l->next = p;}}

void createlist(linklist &l,int n)

l->next = null;

pre = l;

for(i=0;isizeof(lnode));

scanf(&p->data);

pre ->next = p;

pre = p;

}pre->next = null;

}二、其他操作

1.鍊錶的反轉

listlist reverselist(linklist l )

l->next = prev;

return l;

}2.刪除乙個元素x

listlist reverselist(linklist l )

l->next = prev;

return l;

}3.刪除所有重複的元素

void

deleteallx(linklist l)

else

}p = p->next;}}

4.判斷鍊錶是不是有環

bool isloop(linklist head)

return !(fast == null || fast->next == null);

}5.將鍊錶分為兩個鍊錶,乙個為奇數序的元素,另乙個為偶數序的元素

void splice(linklist la, linklist lb)

pb->next = null;

}6.單鏈表的插入排序

void insertsort(linklist l)

p->next = q->next;

q->next = r;

pre->next = q;

}else

p = p->next;

}}7.單鏈表的選擇排序

void

selectsort(linklist l)

if(r != p)

p = p->next;}}

資料結構之鍊錶操作

線性表鏈式儲存結構定義 為了表示每個資料元素ai與其後繼資料元素ai 1之間的邏輯關係,對資料元素ai來說,除了儲存其本身資訊外,還需儲存乙個指示其直接後繼的資訊。我們把儲存資料元素的域稱為資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱為指標或鏈。這兩部分資訊組成資料元素ai的儲存影...

資料結構之鍊錶操作

1 基本概念 鏈式儲存結構不需要用位址連續的儲存單元來實現,而是通過 鏈 建立起資料元素之間的順序關係,因此它不要求兩個在邏輯上相鄰的資料元素在物理邏輯上也相鄰。從而,在插入和刪除元素的時候,不需要對原來的資料元素進行移動,只需要改變鍊錶節點之間的指向關係即可,從而提公升了執行時效率。2 主要儲存結...

資料結構 鍊錶操作之反轉鍊錶

這兩天遇到幾個反轉鍊錶的題目,覺得比較有意思,這裡分享一下 1 給出乙個鍊錶,同時給出索引m和n,要求將位於m和n之間的節點反轉,然後返回結果。1 m n lengthof linklist eg 1 2 3 4 5 m 2,n 4 輸出 1 4 3 2 5 反轉鍊錶的時候,有乙個比較關鍵的技巧,比...