C - String Связанный список - PullRequest
       0

C - String Связанный список

0 голосов
/ 07 февраля 2011

Мне нужно взять следующий код и изменить его так, чтобы он принимал строки в качестве аргументов, а не целые числа. В конце мне нужно, чтобы программа взяла все аргументы командной строки и добавила их в связанный список строк.

Так что, если ввод был шесть семь восемь, когда я напечатал связанный список, он напечатал бы: восемь семь шесть.

#include <stdio.h>
#include <stdlib.h>

typedef struct iNode
{
    int myInt;
    struct iNode* next;
} IntNode, *IntNodePtr;

IntNodePtr insert(int i, IntNodePtr p)
{
    IntNodePtr newp = malloc(sizeof(struct iNode));
    newp->myInt = i;
    newp->next = p;
    return newp;
}

printlist(IntNodePtr p)
{
    if(p == NULL)
        printf("\n");
    else
    {
        printf("%d ", p->myInt);
        printlist(p->next);
    }
}

main(int argc, char* argv[])
{
    int n = 5;

    if(argc > 1)
    n = atoi(argv[1]);

    IntNodePtr iNodeList;
    iNodeList = NULL;
    int i = 0;

    while(i < n)
    {
        iNodeList = insert(i++, iNodeList);
        printf("List is now: ");
        printlist(iNodeList);
    }
}

Ответы [ 3 ]

0 голосов
/ 07 февраля 2011

Я думаю, что ваш вопрос относится к порядку элементов в списке.

Учтите, что с помощью связанных списков можно добавлять элементы в голову, в хвост или вставлять их произвольноplace.

Посмотрите на функцию insert (), она добавляет новые элементы, где?

Проще говоря, вы можете просто изменить порядок, в котором вы вставляете элементы.В реальной жизни это, вероятно, не пойдет слишком хорошо.

Может быть, поддерживать указатель хвоста?И написать функцию addItemToTail ()?

0 голосов
/ 07 февраля 2011

Вы должны прочитать больше об указателях и памяти.Хорошее место, чтобы узнать, что это Стэнфордская библиотека образования CS .Там вы также найдете интересные материалы о связанных списках.

0 голосов
/ 07 февраля 2011

Если проблема заключается в печати решения в обратном направлении, просто сохраните глобальный ptr заголовка, который указывает на первый iNode. Когда вам нужно печатать, while (headPtr.next! = Null) {printf (...); }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...