试写一算法在带头结点的单链表结构上实现线性表操作Length(L)。下面各个步骤的解释要详细

2024-12-15 18:50:36
推荐回答(1个)
回答1:

intListLength_L(LinkList &L)
{
int i=0;//i存储链表长度,

初始为0
LinkList p=L;//p为链表的指针,

初始为头指针,指向头结点
if(p) p=p-next;//如果p指向的头结点不为空,

p指向带数据的第一个结点
while(p){//如果p非空,i长度加1,且指向下一个结点
p=p->next;


i++;}

return i;

//返回i,即链表的长度
}。

从键盘直接读入字符而不用等RETURN键的方法

在某个级别, 与键盘的交互输入一般上都是由系统取得一行的输入才提供给需要的程序。这给操作系统提供了一个加入行编辑的机会(退格、删除、消除等),使得系统地操作具一致性, 而不用每一个程序自己建立。当用户对输入满意, 并键入RETURN (或等价的键)后, 输入行才被提供给需要的程序。

即使程序中用了读入单个字符的函数(例如getchar() 等), 第一次调用就会等到完成了一整行的输入才会返回。这时, 可能有许多字符提供给了程序, 以后的许多调用(象getchar() 的函数) 都会马上返回。


当程序想在一个字符输入时马上读入, 所用的方式途径就采决于行处理在输入流中的位置, 以及如何使之失效。

在一些系统下(例如MS-DOS, VMS 的某些模态), 程序可以使用一套不同或修改过的操作系统函数来扰过行输入模态。在另外一些系统下(例如Unix, VMS 的另一些模态), 操作系统中负责串行输入的部分(通常称为“终端驱动”) 必须设置为行输入关闭的模态,。

这样, 所有以后调用的常用输入函数(例如read(), getchar() 等) 就会立即返回输入的字符。最后, 少数的系统(特别是那些老旧的批处理大型主机) 使用外围处理器进行输入, 只有行处理模式。


因此, 当你需要用到单字符输入时(关闭键盘回显也是类似的问题), 你需要用一个针对所用系统的特定方法, 假如系统提供的话。

新闻组comp.lang.c 讨论的问题基本上都是C 语言中有明确支持的, 一般上你会从针对个别系统的新闻组以及相对应的常用问题集中得到更好的解答, 例如comp.unix.questions 或comp.os.msdos.programmer。

另外要注意, 有些解答即使是对相似系统的变种也不尽相同, 例如Unix 的不同变种。同时也要记住, 当回答一些针对特定系统的问题时, 你的答案在你的系统上可以工作并不代表可以在所有人的系统上都工作。