3

我是 C++ 的初学者程序员,我的问题涉及在单链表上实现操作。我的单链表必须同时具有“char”和“int”变量,并且能够:在列表中删除和添加元素(在开头/结尾)并显示所有列表元素。

在我详细描述问题是什么之前,请看一下我迄今为止设法制作的代码。

#include <iostream>
using namespace std;

struct FunnyList {
    int iValue;
    char *cName;
    FunnyList *next;
};

int main()
{
    FunnyList *base;
    FunnyList *traversal;

    base = new FunnyList;       
    base->next = 0;             
    base->cName = "Alicia";       
    traversal = base;           
    if(traversal != 0) {
        while( traversal->next != 0) {
            traversal = traversal->next;
        }
        cout << traversal->cName << endl;
    }

    traversal->next = new FunnyList;   
    traversal = traversal->next;    
    traversal->next = 0;           
    traversal->cName = "Octavia";

    while(traversal->next != 0) {
        traversal = traversal->next;    
    }
    cout << traversal->cName << endl;

    traversal->next = new FunnyList;    
    traversal = traversal->next;        
    traversal->next = 0;                
    traversal->cName = "Tom";

    while(traversal->next != 0) {
        traversal = traversal->next;    
    }
    cout << traversal->cName << endl;

    return 0;
}

我的问题是:

1)我知道我可能需要实现功能: - insert() - remove() - display()

格式为 (?):

  • void insert_el(char *cName, int iValue);
  • 无效 delete_el(char *cName);
  • 无效打印();

而不是在 main() 中实现它们,但我不知道如何使其与我的部分代码兼容。

我将非常感谢任何帮助。

4

1 回答 1

0

如果你正在做这种简单的旧式C,你通常有负责处理你的列表的函数。喜欢

insert_node(struct FunnyList* previous, struct FunnyList* item);
remove_node(struct FunnyList* base, struct FunnyList* item);
print_nodes(struct FunnyList* base);

这些函数将您的头节点或兄弟节点作为锚点并对其执行操作。

如果您尝试使用 - 方式OO使用C++,您将拥有一个行为类似于std::vectororstd::list并负责此操作的对象。这里的区别在于,您的数据和数据上的函数被封装在一个对象中,您不会对原始数据本身进行操作。C++关于链表的风格教程。

是一个简单的C风格示例和来自 Wikipedia 的这篇文章。

于 2013-04-07T18:39:23.237 回答