首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求大神解决方案

2012-07-30 
求大神#includeiostream#includestdlib.husing namespace std#define N 24typedef struct Node{int d

求大神
#include<iostream>
#include<stdlib.h>
using namespace std;
#define N 24
typedef struct Node
{
int data;
struct Node *next;
}Node,*PNode;
class Linklist
{
public:
void strNode();//构造空链表
  void prodlinklist(Node a[]);//生成链表
int lenlist();//计算节点长度
void printlist();//打印节点
void inserlist(Node r);//插入节点
void concellist(Node r);//删除结点
protected:
Node *p;
};
void Linklist::strNode()//构造空链表函数
{
p=(PNode)malloc(sizeof(Node));
p->next=NULL;
}

void Linklist::prodlinklist(Node a[])//生成链表
{
int i;
Node *q;
q=(PNode)malloc(sizeof(Node));
q=p;
for(i=0;i<N;i++)
{
if(a[i].data==-1)break;
q->next=&a[i];
q=q->next;
}
q->next=NULL;
free(q);
}
int Linklist::lenlist()//计算节点长度
{
int i,j=0;
Node *q;
q=(PNode)malloc(sizeof(Node));
q=p;
for(i=0;i<N;i++)
{
if(q->next!=NULL)
{
q=q->next;
j++;
}
else break;
}
free(q);
return(j);
}
void Linklist::printlist()//打印节点
{
int i;
Node *q;
q=(PNode)malloc(sizeof(Node));
q=p;
if(q->next==NULL)
{
cout<<"没有节点"<<endl;return;
}
for(i=0;i<N;i++)
{
if(q->next!=NULL)
{
q=q->next;
cout<<q->data<<' ';
}
else {cout<<endl;break;}
}
free(q);
}
void Linklist::inserlist(Node r)//插入节点
{
Node *q;
q=(PNode)malloc(sizeof(Node));
q=p;
while(p->next!=NULL)
{
p=p->next;
}
q->next=&r;
p=p->next;
p->next=NULL;
free(q);
}
void Linklist::concellist(Node r)//删除结点
{
int i,j=0;
Node *q,*s;
q=(PNode)malloc(sizeof(Node));
s=(PNode)malloc(sizeof(Node));
q=p;
for(i=0;q->next!=NULL;i++)
{
q=q->next;
if(q->data==r.data)
{
s=q->next;
q->next=s->next;
j=1;
}
}
if(j==0)cout<<"没有找到要删除结点"<<endl;
free(q);
free(s);
}
void inputdata(Node a[])//输入每个节点数据
{
cout<<"输入数据,当输入为-1时停止"<<endl;
int i=0;
for(i=0;i<N;i++)
{
cin>>a[i].data;
if(a[i].data==-1)break;
}
}
void main()
{
Linklist p;
Node a[N];
int i=2,j;
inputdata(a);//输入每个节点数据
p.strNode();//构造空链表
for(;i<=10;i++)
{
if(i%2==0)p.inserlist(a[i]);
}
j=p.lenlist();
cout<<j<<endl;
p.printlist();


}

主要是那个建立空链表的时候p的值保存不了,求大神指教


[解决办法]
试试二级指针
[解决办法]
不是建立空链表的问题,而是你插入结点后又把这个结点给释放了
[解决办法]
你这个inserlist函数完全没写对

热点排行