算法示例:
反转代码:
void ReverseSeqLink(PSeqLink head)
{
if(head == NULL) {
perror("head is null.");
return;
}
if(head->length < 2) {
printf("no need to reverse.");
return;
}
PLinkNode prev = head->linkNode;
PLinkNode cur = prev->next;
while(cur != NULL) {
prev->next = cur->next;
cur->next = head->linkNode;
head->linkNode = cur;
cur = prev->next;
}
return;
}
main.c
#include "seq_link.c"
int main(void)
{
PSeqLink myHead = CreateSeqLink();
int ret = 0;
for(int i=0; i<10; i++) {
ret = InsertIntoSeqLink(myHead, i+1 + 'A', i);
if(ret != SEQ_SUCCESS) {
perror("inser into seq link error.");
return SEQ_ERR;
}
}
DisplaySeqLink(myHead);
InsertIntoSeqLink(myHead, 20 + 'A', 3);
DisplaySeqLink(myHead);
DeleteFromSeqLink(myHead, 1);
DeleteFromSeqLink(myHead, 0);
DisplaySeqLink(myHead);
printf("length of link is:%d\n", GetSeqLinkLength(myHead));
printf("link is empty?[%s]\n", SeqLinkIsEmpty(myHead)?"yes":"no");
printf("'D' is in the link?[%s]\n", SearchInSeqLink(myHead,'D') != SEQ_ERR?"yes":"no");
printf("'V' is in the link?[%s]\n", SearchInSeqLink(myHead,'V') != SEQ_ERR?"yes":"no");
ModifySeqLinkElment(myHead, 'Z', 1);
DisplaySeqLink(myHead);
ReverseSeqLink(myHead);
printf("after reverse the link.\n");
DisplaySeqLink(myHead);
ClearSeqLink(myHead);
DestroySeqLink(myHead);
return 0;
}
结果截图