/*
author: jacky ma
date : 23th,may,07
*//*
主要實現:
1 鍊錶的建立,
2 逆置
3 排序
4 有序鍊錶的歸併
5 兩鍊錶連線
6 迴圈鍊錶的判定
*/#include #include using namespace std;
//鍊錶節點結構
struct linknode
;//建立單鏈表
linknode * create(int n)
internode->next = null;
return head;
}//連線鍊錶
linknode * linkcontact(linknode *head1,linknode *head2)
q->next = head2;
return head1 ;
}//鍊錶逆序
linknode * linkrever(linknode *head)
linknode *p,*q,*bq;
p = head;
q = p->next;
p->next = null;
while( q != null )
head = p;
return head;
}//鍊錶排序用插入法
linknode *linksort(linknode *head)
linknode *p,*q,*qb,*hp,*pb;
p = head; //p指向前鍊錶
hp = p;
q = p->next; //隔離鍊錶,第乙個節點首先分離出來
p->next = null; //
while(q != null)
else if(q->data < p->data)//要進行插入
else //插入其他位置
break;
}} if(p==null) //直接插入最後
}head=hp;
return head;
}//有序單鏈表合併後有序
linknode * linkmerge(linknode *head1, linknode *head2)
headp = p;
while(q!=null && p!=null)
else
}if(q == null)
else if(p == null)
cout<<"合併完成!"while(q != null)
return false;
}//輸出單鏈表的值
void printlinkdata( linknode *node)
coutp1 = p1->next;
} while(p2 != null)
while(p3!=null)
linknode *pinter1, *pinter2, *pinter3, *pinter4;
cout<<"鍊錶1排序前序列"next;
linknode *q = pinter4->next;
for(int i=0; i<10; i++)
q->next = p;
//驗證判定鍊錶中環存在性
linkcir(pinter4);
return 0;
}
鍊錶的C 實現
陣列中插入乙個元素或者刪除乙個元素時,必須移動陣列中的元素,從而使動態列表的順序儲存低效。鍊錶可以解決這一問題,它由資料和乙個指向下乙個節點的指標組成。基本的操作有構造 判空 插入 刪除和遍歷。程式如下 include using namespace std template class list ...
c的鍊錶實現
複習了單向鍊錶 雙向鍊錶,中注釋不多,但基本從函式名字就可以知道函式的作用。雙向鍊錶中的前後節點中的思路是按照linux核心中思路寫的。gcc 7.4.0 include include typedef struct node lnode,llist,node void insert llist l...
鍊錶C 實現
node.h 第乙個檔案 ifndef node h define node h define true 1 define false 0 define ok 1 define error 0 define null 0 define flag 1 class node endif node h l...