| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 429 人关注过本帖
标题:求助:这个程序运行最后出错了(结果开头一行错了,怎么改)
只看楼主 加入收藏
anaill
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-10-31
收藏
 问题点数:0 回复次数:0 
求助:这个程序运行最后出错了(结果开头一行错了,怎么改)

单链表的查找、插入与删除。设计算法,实现线性结构上的单链表的产生以及元素的查找、插入与删除。具体实现要求:
1. 从键盘输入20个整数,产生不带表头的单链表,并输入结点值。
2. 从键盘输入1个整数,在单链表中查找该结点的位置。若找到,则显示“找到了”;否则,则显示“找不到”。
3. 从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出单链表所有结点值,观察输出结果。
4. 从键盘输入1个整数,表示欲删除结点的位置,输出单链表所有结点值,观察输出结果。
5. 将单链表中值重复的结点删除,使所得的结果表中个结点值均不相同,输出单链表所有结点值,观察输出结果。
6. 删除其中所有数据值为偶数的结点,输出单链表所有结点值,观察输出结果。
7. 把单链表变成带表头结点的循环链表,输出循环单链表所有结点值,观察输出结果。
8. (★)将单链表分解成两个单链表A和B,使A链表中含有原链表中序号为奇数的元素,而B链表中含有原链表中序号为偶数的元素,且保持原来的相对顺序,分别输出单链表A和单链表B的所有结点值,观察输出结果。

这个是题目。程序出了,但是运行错误。。

int List::Insert ( const int x, const int i ) {

//将新元素x插入到第i结点之前。i是结点号,从0开始。

ListNode *p = first; int k = 0;

while ( p != NULL && k< i-1 ) { p = p->link; k++; }

//循链找第i-1个结点

if ( p == NULL && first != NULL ) {

//非空表而且链短,找不到第i-1个结点

cout << "Invalid position for Insertation!\n"; return 0;

//终止插入, 函数返回0

}

ListNode *newnode= new ListNode( x, NULL );

//建立一个newnode指示的新结点, 数据为x

if ( first == NULL || i == 0 ) {

//插入空表或非空表第一个结点之前

newnode->link = first;

//新结点成为第一个结点

if ( first == NULL ) last = newnode;

//原为空表时,表尾指针指向这个新结点

first = newnode;

}

else { //插入在链表的中间或尾部

newnode->link = p->link;

if ( p->link == NULL ) last = newnode;

p->link = newnode;

}

return 1; //正常插入,函数返回1

}

删除:

int List::Remove ( int i ) {

//将链表中的第i个元素删去, 通过函数返回该元素。若i不合理, 则返回NULL。

if ( i < 0 ) { cout << "Invalid position for Deletion!\n"; return 0;} //不能删除, 函数返回0

ListNode *p = first, *q; int k = 0;

while ( p != NULL && k< i-1 ) { p = p->link; k++; }

//循链找第i-1个结点

if ( p == NULL || p->link == NULL ) {

//空表或者链短,找不到第i-1个结点

cout << "Invalid position for Deletion!\n";

return 0; //不能删除, 函数返回0

}

if ( i == 0 ) {q = first; p = first = first->link; }

//删第一个结点时,重新拉链

else { q = p->link; p->link = q->link; }

//删中间一个结点或尾结点时

if ( q == last ) last = p;

//删表尾结点时, 表尾指针修改

k = q->data; delete q; return k;

//取出被删结点中的数据值

}

[此贴子已经被作者于2006-10-31 22:07:56编辑过]

搜索更多相关主题的帖子: 结果 运行 
2006-10-31 22:06
快速回复:求助:这个程序运行最后出错了(结果开头一行错了,怎么改)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018094 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved