我真的想用 Python 静态存储 一页文章?

Elephant_小象
  • 12

Python新手, 求教问题,还望详解。

我想要实现的功能:
静态存储一页文章,每行不超过80个字符,共N行。存储结构使用线性表。
输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字标点符号

用户视角:

1.新建文本
2.浏览输入文本
3.……
4.退出

Please enter the number : 1
Input the text:

用Python 如何实现,不是很清楚?求教!
以下是用C++ 实现的过程。

typedef struct line
{
    char *data;
    struct line *next;
}LINE;

void Create(LINE * &head)
{
    printf ("请输入一页文章,以Ctrl+E为结尾(每行最多输入80字符!):\n");
LINE *p=new LINE;               /*首先为链表 建立一个附加表头结点*/                                      
    head=p;                         /*将p付给 表头指针*/
    char ch[100];
    while(1)
    {
       gets(ch);                   /*输入字符串!*/
       if(strlen(ch)>80)
       {
           printf("每行最多输入80字符");
           break;
       }
       if(ch[0]==5)break;            /*如果发现输入 ^E,则退出输入*/      
       p=p->next=new LINE;
       p->data=new char[strlen(ch)+1];          /*为结点分配空间 */    
       strcpy(p->data,ch);
       if(ch[strlen(ch)-1]==5)        /* 除去最后一个控制符 ^E */
       {         
           p->data[strlen(ch)-1]='\0';
           break;
       }
    }
    p->next=NULL;                       /*最后的一个指针为空 */
    head=head->next;
}

算法描述:
存储结构:采用单链表结构存储文章,每个结点存储一行,每行最长不超过80个字符。
用gets函数接收输入,每遇到一个回车换行就新建一个结点,将当前行存入其data域。当发现输入为^E时,在Data的最后加上字符串结束标志,并置当前结点的Next指针域为NULL。

回复
阅读 3k
1 个回答

希望你不是利用这个平台炒作业

#!/user/bin/env python
# -*- encoding: UTF-8 -*-
import sys


def create():
    head = [None, None]
    cur_node = head
    CTRL_E = chr(5)
    while 1:
        input_line = raw_input('请输入一页文章,以Ctrl+E为结尾(每行最多输入80字符!):')
        if len(input_line) > 80:
            print >> sys.stderr, "每行最多输入80字符"
            break

        if len(input_line) > 0:
            if input_line[0] == CTRL_E:
                break
            if input_line[-1] == CTRL_E:
                input_line = input_line[:-1]

            cur_node[1] = [None, None]
            cur_node = cur_node[1]
            cur_node[0] = input_line

    cur_node[1] = None
    head = head[1]
    return head


def output(head):
    cur_node = head
    while cur_node:
        print cur_node[0]
        cur_node = cur_node[1]


def main():
    head = create()
    output(head)


if __name__ == '__main__':
    main()
宣传栏