1、單鏈表的建立和遍歷
2、求單鏈表中節點的個數(太簡單,就不寫了)
3、查詢單鏈表中的倒數第k個結點(劍指offer,題15)
4、查詢單鏈表中的中間結點
5、合併兩個有序的單鏈表,合併之後的鍊錶依然有序【出現頻率高】(劍指offer,題17)
6、單鏈表的反轉【出現頻率最高】(劍指offer,題16)
7、從尾到頭列印單鏈表(劍指offer,題5)
8、判斷單鏈表是否有環
9、取出有環鏈表中,環的長度
10、單鏈表中,取出環的起始點(劍指offer,題56)。本題需利用上面的第8題和第9題。
11、判斷兩個單鏈表相交的第乙個交點(劍指offer,題37)
#include
#include
typedef char elemtype;
/* 1,建立鍊錶,初始化,遍歷
3,找到倒數第k個節點。
4,找到中間節點。
6,逆置要求空間複雜度o(1),時間複雜度o(n)
*//*
建立鍊錶:建立鍊錶增刪
*//**
鍊錶節點
*/typedef struct knodelinknode;
// 建立頭結點
linknode *create()
// 從頭部開始新增節點
void insert(linknode *s,int i)
}// 遍歷節點,並且返回節點長度。
int ergodic(linknode *s)
return
length;
}// 長度
intlength(linknode *s)
return len;
}// 2.1)單鏈表,找到倒數第k個節點。並且輸出。
int find(linknode *s,int k)
s = s->next;
printf("第k個元素是%c\n",s->data);
return1;}
/* 2.2)鍊錶找到倒數第k個節點。
*/int finds(linknode *s,int k)
while(q->next != null && p != null)
printf("中間的節點:%c\n",p->data);
return1;}
// 輸出鍊錶中間節點。
void middle(linknode *s)else
while(t != 0)
printf("這是中間的節點%c\n",s->data);
}// 鍊錶逆置,空間o(1)
/**/
linknode *reverse(linknode *s)
d = r->next; // d 就是為了找到最後乙個節點。讓它的next = null。r->next和最後乙個節點在此時是雙向的。
d->next = null; // 尾節點next為null
r->next = head;
return r;
}// 合併兩個有序鍊錶,非遞迴方法。
void main()
/**
5, 鍊錶的合併。
7,(在不改變鍊錶結構的前提下)逆序輸出單鏈表的值
*/#include
#include
#include
using namespace std;
typedef char elemtype;
typedef struct nodelinknode;
// 建立鍊錶
linknode *create()
// 初始化鍊錶
void init(linknode *s,int k)
}// 遍歷,帶頭結點的。
void pt(linknode *s)
cout<}// 遍歷不帶頭結點的。
void pts(linknode *s)
cout<}//merge 合併有序鍊錶(有序)(帶頭結點的)
linknode *merge(linknode *s,linknode *r)
if(r->next ==
null)
p1 = s->next;
p2 = r->next;
// 確定那個鍊錶,成為新的煉表頭
if(p1->
data
<= p2->
data)else
//合併
while(p1 !=
null
&& p2 !=
null) else
p = p->next;
}//如果有乙個鍊錶為空
if(p1)
if(p2)
return root;
}// (在不改變鍊錶結構的前提下)逆序輸出單鏈表的值
void outputs(linknode *s)
}cout<
data; // 平凡事務
}void main()
鍊錶的面試題總結
鍊錶的面試題總結 鍊錶在面試中是非常容易的考點,所以在這裡總結一下,希望對大家有所幫助 首先,我們給出鍊錶的基本結構,和基本的操作,建立乙個結點,列印鍊錶的結點,尾插法加入結點。include include include typedef int datatype typedef struct s...
面試題總結 鍊錶型別
單向鍊錶的定義如下 struct listnode 往該鍊錶的末尾新增乙個結點的c 如下 listnode addtail listnode phead,int value pnode m pnext pnew return phead 在鍊錶中找到第乙個含有某值的結點並刪除該結點 void rem...
鍊錶的面試題
1 比較順序表和煉表的優缺點,它們分別在什麼場景下使用?1 順序表支援隨機訪問,單鏈表不支援隨機訪問。2 順序表插入 刪除資料效率很低,時間複雜度為o n 除尾插和尾刪 單鏈表插入 刪除效率更高,時間複雜度為o 1 3 順序表的cpu高速緩衝效率更高,單鏈表cpu高速緩衝效率低。2 列印單向鍊錶 v...