#include #include #include #include using namespace std;
struct listnode;};
void initnode(listnode& node)
bool isempty(listnode& head)
void pushfront(listnode& head,int a)
void popfront(listnode& head)
}listnode* front(listnode& head)
listnode* insert(listnode* p, int a)
//p插入node之後
listnode* insert(listnode* node,listnode* p)
//將s到e之間的鍊錶插入到node之後
listnode* insert(listnode* node,listnode* s,listnode* e)
listnode* erease(listnode& head,listnode* p)
//刪除最後乙個節點,則從頭遍歷鍊錶來刪除
listnode* node = &head;
for( ; node && node->next != p ; node = node->next);
if(node->next == p)
return(null);
}//反轉鍊錶
void reverse(listnode& head)
}//將head2合併到head1,保證兩個鍊錶都是有序的,假設鍊錶是公升序排列
void merge(listnode& head1,listnode& head2)
else
}if(p1)
if(p2) }
//插入排序
void sort(listnode& head)
}t = p;
p = p->next;
//將t插入到p1後
insert(p1,t); }}
void clear(listnode& head)
head.next = null;
}//輔助程式
void print(listnode& head)
cout << endl;
}int isequal(vector& ar,listnode& head)
p = p->next;
} return(1);
}void test_merge()
sort(head);
n = rand() % 500;
for(int i = 0; i < n; ++i)
sort(head1);
merge(head,head1);
sort(array.begin(),array.end());
if(!isequal(array,head))
else
clear(head);
clear(head1);
array.clear(); }}
void test_sort()
sort(head);
sort(array.begin(),array.end());
if(!isequal(array,head))
else
clear(head);
array.clear(); }}
int main()
鍊錶的基本操作
鍊錶操作是最基本的 必須掌握的知識點,最好滾瓜爛熟,透徹理解。工作時間短用的也不夠頻繁,還是總結一下比較好,以加強鞏固。1.單鏈表 結點形式 區分幾個概念 首節點 第乙個元素所在節點。頭指標 指向首節點的指標。頭結點 為了操作方便,在第乙個節點之前附設的乙個結點,此時指向頭結點的為頭指標。基本操作 ...
鍊錶的基本操作。。。
include node.h 列印鍊錶 void print node head printf n 從尾部插入 void insert tail node head,const int d while t next null t next p p next null 從頭部插入 void inser...
鍊錶的基本操作
head代表第乙個指標,前面加了乙個dummy節點,方面用來處理頭指標。include using namespace std struct linknode 建立只有空鍊錶,返回乙個dummy節點 linknode createlink linknode initlink linknode dum...