win7管理员权限安装:链表删除偶数结点的程序

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 00:02:19
运行出错,请帮忙找下错误

#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct lnode
{int data;
lnode *next;
}lnode;
typedef struct sqlis
{lnode*l;
int length,sqlistlist;
}sqlist;
void create_list(sqlist&t);
void get_elem(sqlist&t);
void traverse_list(sqlist&t);
void reverse_list(sqlist&t);
void del_elem(sqlist&t);
int main(int argc, char* argv[])
{sqlist t;
create_list(t);
get_elem(t);
traverse_list(t);
reverse_list(t);
del_elem(t);
return 0;
}
//---------------------------------------------------------------------------
void create_list(sqlist&t)
{lnode *p,*q;
if(p=(lnode*)malloc(sizeof(lnode)))
{p->data=0;
p->next=NULL;
t.l=p;
}
else
exit(1);
cout<<"请输入链表中元素的个数:";
cin>>t.sqlistlist;
for(int i=1;i<=t.sqlistlist;i++)
{q=(lnode*)malloc(sizeof(lnode));
cout<<"请输入链表中第"<<i<<"元素:";
cin>>q->data;
cout<<endl;
cout<<q<<endl;
p->next=q;
p=q;
q->next=NULL;
}
}
//----------------------------------------------------------------------------
void get_elem(sqlist&t)
{lnode *q;
int n,m(1);
cout<<"请输入所要查找元素的位置:";
cin>>n;
cout<<endl;
if(n<1||n>t.sqlistlist)
{cout<<"输入的位置不合法!!!"<<endl;
return;
}
q=t.l;
while(q&&m++<n)
q=q->next;
cout<<"查找的元素为:"<<(q->next)->data<<endl;
}
//-------------------------------------------------------------------------------
void traverse_list(sqlist&t)
{lnode *q;
q=(t.l)->next;
int n(1);
while((q!=NULL)&&n++<=t.sqlistlist)
{cout<<"链表中第"<<n<<"元素为:"<<q->data<<endl;
q=q->next;}

}
//-----------------------------------------------------------------------------------

void reverse_list(sqlist&t)
{lnode *q,*n,*m;
q=t.l;
cout<<q;
m=q->next;
//if (m==NULL);
//{cout<<"该链表为空表!!"<<endl;
//cout<< m;
//return;
//}
while(m!=NULL)
{n=m;
m=m->next;
n->next=q->next;
q->next=n;
}
traverse_list(t);
}
//------------------------------------------------------------
void del_elem(sqlist&t)
{lnode *q,*p;
q=t.l;
p=NULL;
if(q->next==NULL)
cout<<"此链表为空!";
else
p=q->next->next;
while(p!=NULL)
{q->next=p->next;
q=p->next;
free(p);
(q!=NULL)?(p=q->next): p=NULL;
}
traverse_list(t);
}