typedef struct Node
{
string name;
string tel;
Node * next;
}linkList;
/************************************************************************/
/* 函数名: deleteNode(链表指针,节点位置) */
/* 函数作用: 删除一个已存在的记录 */
/************************************************************************/
void deleteNode(linkList *list, int location)
{
linkList *p;
int cnt;
p = list;
cnt = 0;
while (p && cnt != location - 1)
{
cnt++;
p = p->next;
}
// 删除节点,释放内存空间
p->next = p->next->next;
delete p->next;
}
/************************************************************************/
/* 函数名: displayAll */
/* 函数作用: 显示通讯录所有记录 */
/************************************************************************/
void displayAll(const linkList * list)
{
linkList *p;
int cnt;
p = list->next;
cnt = 1;
while (p)
{
cout << "Case " << cnt << ":" << endl;
cout << " name: " << p->name << endl;
cout << " phone: " << p->tel << endl;
cnt++;
p = p->next;
}
}
感觉删除出了问题 , 删掉哪个位置的结点 , displayAll的时候再到那个位置结点就会出问题
再有人拿随便搜的答案糊弄人就把问题关掉 一楼的哥们忒垃圾
/************************************************************************/
/* 函数名: sortNode() */
/* 函数作用: 对链表进行排序(冒泡法) */
/************************************************************************/
void sortNode(linkList *&list)
{
linkList *p;
linkList *q;
p = list;
while ( p->next )
{
q = p->next;
while (q->next)
{
// 按name排序
if (p->next->name[0] > q->next->name[0]) // 条件为真,交换两节点位置
{
linkList *temp;
temp = p->next->next;
p->next->next = q->next->next;
q->next->next = temp;
p->next = q;
q->next = p;
}
q = q->next;
}
p = p->next;
}
}
这个函数无法实现排序功能 搞了半天了 还是没法实现排序 急~!!