vc++6.0 编程问题 输入员工信息链表,编写deln函数,删除第n个节点; 10

两个程序第一个运行没问题,运行完,输出删完节点的链表后,程序出错。也就是说,第一个程序和第二个程序运行结果一样,第二个正常结束,第一个出现错误。你们自己运行一下好了。求大... 两个程序第一个运行没问题,运行完,输出删完节点的链表后,程序出错。

也就是说,第一个程序和第二个程序运行结果一样,第二个正常结束,第一个出现错误。

你们自己运行一下好了。
求大神解答,谢谢。
#include "iostream.h"
#include "string.h"
struct node
{
char num[6];
char name[20];
double wage;
node *next;
};
struct node *create(int n)
{
struct node *head=NULL;
struct node *tail,*newnode;
for(int i=0;i<n;i++)
{
newnode=new node;
cin>>newnode->num >>newnode->name >>newnode->wage;
if(head==NULL)
head=newnode;
else
tail->next=newnode;
tail=newnode;
}
return head;
}
struct node *delnode(node *head,char x[])
{
struct node *p,*q;
p=head;
if(head==NULL)
cout<<"The list is null!\n";
else
{
while(p!=NULL&&strcmp(p->num,x)!=0)
{
q=p;
p=p->next;
}
if(p==head)
{
head=p->next;
delete p;
}
else if(p!=NULL)
{
q->next=p->next;
delete p;
}
else
cout<<x<<"dose not exist in the list!\n";
}
return head;
}
void print(node *head )
{
struct node*p=head;
while(p!=NULL)
{
cout<<p->num<<'\t'<<p->name<<'\t'<<p->wage<<endl;
p=p->next;
}
}
void main()
{
int n;
char c[10];
double wage;
cout<<"输入员工数"<<endl;
cin>>n;
cout<<"输入工号,姓名,工资"<<endl;
struct node *head;
head=create(n);
cout<<"输入要删除员工工号"<<endl;
cin>>c;
head=delnode(head,c);
cout<<"删除后"<<endl;
print(head);
}

#include "iostream.h"
struct node
{
char num[6];
char name[20];
double wage;
node *next;
} *q,*p,*head;

void deln(int n)
{
int i=0;
if (n==1)
{
head = head->next;
return;
}
p=head;
while (p!=NULL)
{
i++;
if (i==n)
{
q->next = p->next;
return;
}
q = p;
p = p->next;
}
}

void main()
{
int i,m,n;
cin >> m;
for (i=1; i<=m; i++)
{
p = new node;
cin >> p->num >> p->name >> p->wage;
if (i==1)
head =p;
else
q->next = p;
q = p;
}
p->next = NULL;
cin >> n;
deln(n);
p=head;
while (p!=NULL)
{
cout << p->num << ends << p->name << ends << p->wage << endl;
p = p->next;
}
}
展开
 我来答
无人学cYa86
2012-12-16 · 超过11用户采纳过TA的回答
知道答主
回答量:40
采纳率:100%
帮助的人:28.5万
展开全部

等等~ 我把我这里看完了给你看你的程序的呢 。   不忙 。

不说你也懂了的~~~

 那个用指针的时候最好要记得把NEXT 修改为NULL;

我 每次写的时候都会在INIT 里面把所有的都修改了的  到现在没有出现过这样的错误~~。

 那个第二个程序没给你看过

 看了一下 第二个是因为有了 在查找的上限 所以不会错。。

 给分吧 

来自:求助得到的回答
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式