删除单链表中的偶数元素

nyj_vbnet 2006-10-31 11:31:34

我写的那个删除偶数原素的函数void DelOU_LinkList(LinkList &L);有错,但不会改,请各位指点.

#include<iostream>
#include<cstdlib>
#define ElemType int

typedef int Status;
typedef struct lnode
{
ElemType data;
struct lnode *next;
}LNode,*LinkList;

LinkList myList;

void CreateList_LinkList(LinkList &L,int n,char createBy);
void viewList(LinkList L);
void DelOU_LinkList(LinkList &L);

int main()
{
int createNum;
char createBy;
cout << "----链表示例----" << endl;
cout << "请输入你要建立的链表的长度:_\b";
cin >> createNum;
do
{
cout << endl << "请输入你建立表的方式(随机->0输入->其他):_\b";
cin >> createBy;
cout << endl;
if(createBy!='0'&&createBy!='1') cout << "你的输入有误,请重试";
}while(createBy!='0'&&createBy!='1');
CreateList_LinkList(myList,10,createBy);
cout << "遍历表:" << endl;
viewList(myList);
system("pause");
//cout << "del ou:" << endl;
//DelOU_LinkList(myList);
viewList(myList);





system("PAUSE");
return 0;
}

void CreateList_LinkList(LinkList &L,int n,char createBy)
{
LinkList p;
//先过来一个头节点
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;

//开始建立链表
for(int i=0;i<n;i++)
{
p = (LinkList)malloc(sizeof(LNode));
if(createBy=='0')
{
p->data = rand()%101;
}
else
{

cout << "请输入你第" << i+1 << "个数:_\b" ;
cin >> p->data;
cout << endl;

}
p->next = L->next;
L->next = p;
}
return;

}

void viewList(LinkList L)
{
int i=0;
LinkList p;
p = L->next;
cout << endl << "\t\t==========遍历开始==========" << endl;
while(p)
{
if(i%2==0) cout << endl;
cout << "\tmyList.data[" << i << "]= " << p->data;
i++;
p = p->next;
}
if(i==0) cout << "\t表还是空表" << endl;
cout << endl << "\t\t==========遍历结束==========" << endl;
return;

}

void DelOU_LinkList(LinkList &L)
{
LinkList p,q,t;
p=L;
q =p;
while(q)
{
t =p;
q = p->next->next;
if(p->next->data%2==0)
{
if(q)
{
t->next = q;
free(p->next);
}
else
{
t->next = NULL;
free(p->next);
}

}
p = q;


}
return;
}

void Sort_LinkList()

...全文
667 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
OOPhaisky 2006-10-31
  • 打赏
  • 举报
回复
就是顺序访问,逐个判断是否为偶数,然后就是指针操作+delete了。
至于楼主的程序,建议自己debug一下,这样才会有提高。
Andrionda 2006-10-31
  • 打赏
  • 举报
回复
每次取到 data
if(p->data%2 == 0)
{
delete 操作
同时连接后面的链.
}
else
next;
watermelontx 2006-10-31
  • 打赏
  • 举报
回复
用一个判断偶数的函数..
单链表删除函数中加上对上面判断函数,选出要删除的元素..
飞哥 2006-10-31
  • 打赏
  • 举报
回复
就是查找操作+得了特操作~

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧