2005
09.22

昨天做了一下MS的两个题目。一个SQL的,一个C/C++的。
C++的问题比较容易,很快搞定后,赶紧下载SQL Server Personal Editon,做SQL题目。以前也没写过Stored Procuedure,又赶紧看manual,现学现卖了。

两个题目,我的解答是这样的
C++

Node* Revert(Node* head, Node* offset)
{
    Node* node = head;
    Node* next;
    Node* prior = (offset == 0 ? 0 : offset->next);

    while (node)
    {
        next = node->next;
        node->next = prior;
        if (node == offset) break;
        prior = node;
        node = next;
    }

    return node;
}

SQL

CREATE PROCEDURE DeletePost @post_id INT AS
  DECLARE @cid INT
  DECLARE @pid INT
  DECLARE @tid INT
  SELECT @pid = @post_id
  SELECT @tid = TopicID FROM tbl_Posts
    WHERE PostID = @post_id

  WHILE (SELECT COUNT(PostID) FROM tbl_Posts
           WHERE PostID <> @post_id AND ParentID = @post_id) > 0
  BEGIN
    SELECT TOP 1 @cid = PostID FROM tbl_Posts
      WHERE PostID <> @post_id AND ParentID = @pid
    IF (@cid = @pid)
    BEGIN
      -- print @cid
      DELETE FROM tbl_Posts WHERE PostID = @cid
      SELECT @pid = @post_id
    END
    ELSE
    BEGIN
      SELECT @pid = @cid
    END
  END
  DELETE FROM tbl_Posts WHERE PostID = @post_id
GO

Comments are closed.