In this report, I introduce an efficient parsing algorithm even for highly ambiguous context-free grammars, which is intended to be applied to natural language processing. It uses a graph-structured stack as those by Tomita (1991), Kipps (1991), and Nederhof (1993). Here, a graph-structured stack is a directed graph whose nodes are sets of pairs of an item and an input string, and whose edges are pointers (parent pointers), each pointing to a parent node in the parse tree. The new technique here is to prune the pointers pointing to the nodes having the same item part. By this pruning, we cannot obtain all parse trees, but we can reduce the size of the set of parent pointers to a constant, thus making the time complexity of this algorithm $O(n^2)$. In this report, I first define the algorithm and show its correctness, and then I analyze its time complexity. Then I show that by this parsing a class of typical highly ambiguous grammars given by Kipps (1991) that need $O(n^3)$ by his algorithm can be parsed in $O(n^2)$. Finally some study is made on the range of prunable grammars and application for natural language processing.