让insert(L,n)将自然数n插入单链表L.任何人都可以帮我提供伪代码描述

时间:2014-10-14 02:22:25

标签: algorithm list pseudocode

做我的CS作业,但不知道如何编写伪代码。

让插入(L,n)插入blablabla

2 个答案:

答案 0 :(得分:0)

实现递归解决方案很容易。 c ++中的代码如下。

struct Node {
    int val;
    Node *next;
    Node(int t): val(t), next(nullltr) 
};
//return the node after inserting n.
Node* insert(Node *L, int n) {
   if (L == nullptr) return new Node(n);
   if (L->val < n) {
       L->next = insert(L->next, n);
   } else if (L->val > n) {
       Node *tmp = new Node(n); 
       tmp->next = L;
       L = tmp;
   }
   //do nothing when L->val == n.
   return L;
}

答案 1 :(得分:0)

如果不允许重复,您可以认为列表看起来像这样

...5,6,7,8...

使用这些知识,您知道最多需要步骤n步才能到达目的地。您可以通过递归或循环来完成此操作。

递归(节点e,int n):

  1. 如果e.value是n返回。
  2. 如果e.next不为NULL,则调用Recursion(e.next,n),否则e.next =由n组成的新节点。
  3. 完成。
  4. Iterative-way(int n):

    1. node = list.root
    2. 当节点不为空时循环:
    3. 如果node.value为n,则停止。
    4. 结束循环
    5. 如果node.next为NULL,则node.next =由n组成的新节点。 else(由n组成的新节点).next = node.next和node.next =由n组成的新节点。