輸入:
5 //長度
2 //第一個節點
3 2 //3插入第二個節點
4 3 //。。。
5 2 //。。。
1 4 //。。。
3 //删除第三個節點
輸出:
2 5 1 4
有些地方是為了湊答案,連結清單的頭部插入和删除需要注意。
void insertLinkList(ListNode* &pListHead,int data,int position){
ListNode *p = pListHead;
int index = ;
if (position==)
{
ListNode *q = new ListNode;
q->m_nKey = data;
q->m_pNext = pListHead;
pListHead = q;
}
else{
while (index++ < position)
{
p = p->m_pNext;
}
ListNode *q = new ListNode;
q->m_nKey = data;
q->m_pNext = p->m_pNext;
p->m_pNext = q;
}
}
void deleteNode(ListNode* &pListHead, int position){
ListNode *p = pListHead;
int index = ;
while (index++ < position-)
{
p = p->m_pNext;
}
p->m_pNext = (p->m_pNext)->m_pNext;
}
int main()
{
//按規則插傳入連結表
int length;
cin >> length;
int data;
int position;
ListNode* pListHead = NULL;
ListNode* p = new ListNode;
cin >> data;
p->m_nKey = data;
p->m_pNext = NULL;
pListHead = p;
int index = ;
while (index++<length)
{
cin >> data;
cin >> position;
insertLinkList(pListHead,data,position);
}
cin >> position;
deleteNode(pListHead, position);
p = pListHead;
while (p)
{
int data = p->m_nKey;
cout << data ;
if (p->m_pNext)
{
cout << " ";
}
p = p->m_pNext;
}
cout << endl;
return ;
}