#include<iostream>
using namespace std;
struct node{
int num;
node *next;
};
node *head1=NULL,*head2=NULL,*s,*tail,*tail1;
void create(node *&);
void show();
void del(int);
void insert(node *&,node *);
int main(){
int n,num,s;
node *head=NULL;
char spot;
bool w=1;
while(w){
cout<<"想进行的操作是:(1.建立传感器结点链表(以0结束) 2.遍历链表 3.删除某一结点 4.插入结点):";
cin>>n;
switch(n){
case 1:create(head1);break;
case 2:show();break;
case 3:cout<<"输入需要删除的结点:"; cin>>num;del(num);break;
case 4:cout<<"输入需要插入的结点:"; cin>>s;insert(head,s);break;
default:cout<<"输入错误!"<<endl;
}
cout<<"是否继续操作(1/0)";
cin>>w;
}
}
void create(node *&head){
node *p,*s;
s=new node;
cin>>s->num;
while(s->num!=0){
if(head==NULL) head=s;
else
p->next=s;
p=s;
s=new node;
cin>>s->num;
}
tail=p;
tail1=s;
p->next=s;
s->next=NULL;
}
void show(){
node *p;
for(p=head1;p->next!=NULL;p=p->next)
cout<<p->num<<endl;
}
void del(int a){
node *p,*s;
s=head1;
for(p=head1;p->next!=NULL;p=p->next){
if(p->num==a){
if(p==head1){
head1=p->next;
delete p;
break;
}
else if(p!=tail){
s->next=p->next;
delete p;
break;
}
else{
tail=s;
s->next=tail1;
delete p;
break;
}
}
s=p;
}
}
void insert(node *head,node *s){
node *p,*q;
p=head;
if(head==NULL){
head=s;
s->next=NULL;
return;
}
else{
while((s->num>p->num)&&(p->next!=NULL)){
q=p;
p=p->next;
}
if(s->num<=p->num){
if(head==p){
head=s;
s->next=p;
}
else{
q->next=s;
s->next=p;
}
}
else{
p->next=s;
s->next=NULL;
}
}
return;
}
第十一行和二十四行一直报错
修改如下,供参考:
#include<iostream>
using namespace std;
typedef struct node{
int num;
node *next;
}node;
node *head1=NULL,*head2=NULL,*s,*tail,*tail1;
void create(node *&);
void show(node *);
void del(node *&,int);
void insert(node *&,int);//void insert(node *&,node *);
int main(){
int n,num,ss;
//node *head=NULL;
char spot;
int w=1;//bool w=1;
while(w){
cout<<"想进行的操作是:(1.建立传感器结点链表(以0结束) 2.遍历链表 3.删除某一结点 4.插入结点):";
cin>>n;
switch(n){
case 1:create(head1);break;
case 2:show (head1);break;
case 3:cout<<"输入需要删除的结点:"; cin>>num;del (head1,num);break;
case 4:cout<<"输入需要插入的结点:"; cin>>ss;insert(head1,ss);break;
//case 4:cout<<"输入需要插入的结点:"; cin>>s;insert(head,s);break;
default:cout<<"输入错误!"<<endl;
}
cout<<"是否继续操作(1/0)";
cin>>w;
}
}
void create(node *&head){
node *p,*s;
//s=new node;
//cin>>s->num;
while(1){//while(s->num!=0){
s=new node;
cin>>s->num;
if(s->num==0) break;
if(head==NULL) head=s;
else
p->next=s;
p=s;
}
delete s;
p->next=NULL;
//tail=p;
//tail1=s;
//p->next=s;
//s->next=NULL;
}
void show(node *head){
node *p;
for(p=head;p!=NULL;p=p->next)
cout<<p->num<<endl;
}
void del(node *&head,int a){
node *p,*s;
//s=head;
for(p=head,s=NULL;p!=NULL;s=p,p=p->next){
if(p->num==a){
if(p==head){
head=p->next;
delete p;
break;
}
else{
s->next=p->next;
delete p;
break;
}
//else{
// tail=s;
// s->next=tail1;
// delete p;
// break;
//}
}
//s=p;
}
}
void insert(node *&head,int ss){
node *p,*q,*s;
s = new node;
s->num=ss;
p=head;
if(head==NULL){
head=s;
s->next=NULL;
return;
}
else{
while((s->num>p->num)&&(p->next!=NULL)){
q=p;
p=p->next;
}
if(s->num<=p->num){
if(head==p){
head=s;
s->next=p;
}
else{
q->next=s;
s->next=p;
}
}
else{
p->next=s;
s->next=NULL;
}
}
return;
}