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

一个关于大型数据的输入解决方法

2012-03-24 
一个关于大型数据的输入有一个很大数据,可能是好几千位的数据,然后把它拆分开一个一个位数,然后按顺序每一

一个关于大型数据的输入
有一个很大数据,可能是好几千位的数据,然后把它拆分开一个一个位数,然后按顺序每一位存放在链表的一个结点里面。但是我能力有限,用了很多的方法还是没有实现这样的功能,求求各位大虾们用C语言帮我实现实现下。
问题补充:
  输入:123456789
  将 1 存放在链表的第一个结点里, 2 放在链表的第二个结点中,以此类推,最后的链表如下:
  head -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 ->9
请各位大虾们帮帮忙,谢谢!

[解决办法]
定义一个char类型数组,将目标大数存放进数组中,然后循环将其每一个元素转化成整形存入链表中。
链表要是不会,就自己看书吧。

[解决办法]
1.123456789%10=9
2.123456789/10=12345678
依次执行1,2步骤,得到最末尾的数
然后用头插法插入链表
[解决办法]
这种数据是文件类型的?还是其他呢?
[解决办法]
几千位的数据,怎么存?

探讨

1.123456789%10=9
2.123456789/10=12345678
依次执行1,2步骤,得到最末尾的数
然后用头插法插入链表

[解决办法]
用哈西表的方法更好
[解决办法]
“可能是好几千位的数据,然后把它拆分开一个一个位数”

可以把大数据当做字符串,一个字符一个字符的读入吧。
[解决办法]
把大数看成字符串的话 直接循环一个一个字符插入链表尾不就行了
[解决办法]
开一个字符数组保存着几千位数,然后一位一位的添加到链表上去。LZ应该知道了。
[解决办法]
几千位的数组。。好可怕 。。建议用文件保存。从文件里面读取。
[解决办法]
C/C++ code
#include<iostream>#include<string>using namespace std;typedef struct node{    char data;    struct node *next;}node;int main(){    char ch[10000];   //应该可以满足LZ要求    cin >> ch;    int i;    int len = strlen(ch);    node *head = (node *)malloc(sizeof(node));    head->next=NULL;    for(i=0;i<len;i++)    {        node *q = head;        node *p = (node *)malloc(sizeof(node));        p->data=ch[i];        while(q->next)        {            q = q->next;        }        q->next=p;        p->next=NULL;    }    while(head->next)    {        cout<<head->next->data;        head = head->next;    }    cout<<endl;    return 0;}
[解决办法]
无需动态分配内存啦,何必浪费原来的数组呢,读入数据的时候就可以构建“数组链表”了,嘿嘿
C/C++ code
#include <stdio.h>typedef struct _arr_link{    char ch;    struct _arr_link* next;} TArrLink, *PTArrLink;void prn_arrlink(PTArrLink phdr){    PTArrLink ptr = phdr->next;    while(ptr)    {        printf("%c", ptr->ch);        ptr = ptr->next;    }        printf("\n");}int main(void){    TArrLink chlink[10000] = { 0 };    int i = 0;    while(scanf("%c", &chlink[i].ch) != EOF)    {        if(0x0a == chlink[i].ch) break;        if(++i >= 10000) break;        chlink[i - 1].next = &chlink[i - 1] + 1;    }    TArrLink linkHdr = { 0 };    linkHdr.next = chlink;        prn_arrlink(&linkHdr);    fflush(stdin);    getchar();    return 0;}
[解决办法]
C/C++ code
#include <stdio.h>#include <malloc.h>#include <stdlib.h>typedef struct node{    char data;    struct node *next;}linkNode, *linklist;/**功能:初始化链表*返回值:链表首地址*/linklist initList(){    linklist head;    head = (linklist)malloc(sizeof(linkNode));    if(head == NULL)        return NULL;    head->next = NULL;    return head;}/**功能:输出链表数据*参数:链表首地址*/void printList(linklist head){    if(head == NULL || head->next == NULL)        return;    head = head->next;    printf("\nlinklist:\n");    while(head != NULL)    {        printf("%c  ", head->data);        head = head->next;    }    printf("\n");}/**功能:申请空间*参数:结点(数据)*返回值:指向结点的指针*/linklist makeNode(linkNode nodeData){    linklist newNode;    newNode = (linklist)malloc(sizeof(linkNode));    if(newNode == NULL)        return NULL;    newNode->data = nodeData.data;    return newNode;}/**功能:在链表尾部插入结点*参数:链表首地址,待插入结点地址*/void pushBack(linklist head, linklist insertNode){    if(head == NULL)        return;    while(head->next != NULL)    {        head = head->next;    }    head->next = insertNode;    insertNode->next = NULL;}int main(){    linklist list, insertNode;    linkNode newNode;        list = initList();    while(1)    {        scanf("%c", &newNode.data);        if(newNode.data == '\n')            break;        insertNode = makeNode(newNode);                pushBack(list, insertNode);    }    printList(list);    system("pause");    return 0;} 


[解决办法]
看书走。。。。

热点排行