鍊錶的基本操作

2021-06-13 13:11:28 字數 1764 閱讀 9066

#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...