删除单链表中的偶数元素
我写的那个删除偶数原素的函数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()