鍊錶的部分功能與題目

2021-09-25 05:53:34 字數 3536 閱讀 2766

1.鍊錶逆序。

2.刪除鍊錶中重複的資料,只保留乙份。

3.檢查鍊錶中是否有環。

4.查詢環型鍊錶的入口。

5.檢查兩個鍊錶是否是y型鍊錶,並找出入口。

6.合併兩並兩個有序鍊錶,結果依然保持有序。

#include #include #include #define type int

typedef struct node

node;

// 建立節點

node* creat_node(type data)

typedef struct list

list;

// 建立

list* creat_list(void);

// 銷毀

void destory_list(list* list);

// 頭新增

void head_add_list(list* list,type data);

// 尾新增

void tail_add_list(list* list,type data);

// 頭刪除

bool head_del_list(list* list);

// 尾刪除

bool tail_del_list(list* list);

// 插入

bool insert_list(list* list,int index,type data);

// 位置刪除

bool delete_index_list(list* list,int index);

// 值刪除

bool delete_value_list(list* list,type data);

// 排序

void sort_list(list* list);

// 遍歷

void show_list(list* list);

void release(list* list)//鍊錶逆序

p2->next = p1;

list->head = p2;

list->tail->next = null;//

}void row_weight(list* list)//刪除鍊錶中重複的資料,只保留乙份。

node* temp = j->next;//j是temp的前乙個節點

j->next = temp->next;//

free(temp); //目的是刪掉j->next

} }}bool is_ring(list* list)//檢查鍊錶中是否有環。

return false;

}type* find_ring_in(list* list)//查詢環型鍊錶的入口

} node = node->next; }}

bool is_ylist(list* l1,list* l2)//檢查兩個鍊錶是否是y型鍊錶,並找出入口。

type* in_ylist(list* l1,list* l2)

while(null != n2)

n1 = l1->head , n2 = l2->head;

if(len1 > len2) }

else }

while(null!=n1 && null!=n2)//前面將n1 ,n2都定義處理成了一樣的有效長度,當兩個鏈在某點位址相同是則為入口

n1 = n1->next;

n2 = n2->next;//是節點向後 }}

node* _merge_list(node* n1,node* n2)//合併兩並兩個有序鍊錶,結果依然保持有序。

else }

list* merge_list(list* l1,list* l2)

else

node *node = list->head;

while(null != n1 && null != n2)

else

node = node->next;

} if(null != n1)

node->next = n1;

else

node->next = n2;

return list;

}// 建立

list* creat_list(void)

// 銷毀

void destory_list(list* list)

free(list);

}// 頭新增

void head_add_list(list* list,type data)

else

list->size++;

}// 尾新增

void tail_add_list(list* list,type data)

else

list->size++;

}// 頭刪除

bool head_del_list(list* list)

free(temp);

list->size--;

return true;

}// 尾刪除

bool tail_del_list(list* list)

node* prev = list->head;

while(prev->next != list->tail)

free(list->tail);

list->tail = prev;

prev->next = null;

list->size--;

return true;

}// 插入

bool insert_list(list* list,int index,type data)

node* prev = list->head;

for(int i=0; inext;

} node* node = creat_node(data);

node->next = prev->next;

prev->next = node;

list->size++;

return true;

}// 位置刪除

bool delete_index_list(list* list,int index)

node* node = prev->next;

prev->next = node->next;

free(node);

list->size--;

} return true;

}// 值刪除

bool delete_value_list(list* list,type data)

node* prev = list->head;

while(null!=prev->next)

prev = prev->next;

} return false;

}// 排序

void sort_list(list* list)

} }}// 遍歷

void show_list(list* list)

printf("\n");

}

int main()

Choerodon功能與敏捷術語對應表

它由product backlog開始,經過sprint會議從prdouct backlog挑選出一些優先順序最高的故事 story 形成迭代的sprint backlog 乙個sprint一般為1個月 在sprint中會進行每日站會,迭代結束時會進行演示和回顧會議。了解敏捷的朋友都知道backlo...

常見的鍊錶題目

一些常見的單鏈表題目,總結思路和實現 1.單鏈表的反序 2.給單鏈表建環 3.檢測單鏈表是否有環 4.給單鏈表解環 5.檢測兩條鍊錶是否相交 6.不輸入頭節點,刪除單鏈表的指定節點 只給定待刪除節點指標 1.單鏈表的反序 view plain 逆轉鍊錶,並返回逆轉後的頭節點 node reverse...

常見的鍊錶題目

分類 演算法 資料結構 一些常見的單鏈表題目,總結思路和實現 1.單鏈表的反序 2.給單鏈表建環 3.檢測單鏈表是否有環 4.給單鏈表解環 5.檢測兩條鍊錶是否相交 6.不輸入頭節點,刪除單鏈表的指定節點 只給定待刪除節點指標 1.單鏈表的反序 view plain 逆轉鍊錶,並返回逆轉後的頭節點 ...