使用数字1000-9999填充链接列表

时间:2017-02-10 23:07:02

标签: java for-loop linked-list

所以我需要填充名为Candidate的链接列表,编号为1000-9999。 我知道如何为带有foor循环的数组做这件事,我假设它在这里类似。

我有一个名为setInfo的setter方法,并设置了在节点类中创建的链接方法,它们就在这里。

public void setInfo(int info){ //Info Setter
        this.info = info;
    }
public void setLink(LLIntegerNode link){ //Link setter
        this.link = link;
    }

我的尝试就在这里

LLIntegerNode candidate;   //Node class and Linked List named candidate
for(int j =9999; j >=1000; j--){ 
LLIntegerNode canNode = new LLIntegerNode(j, null); //new node
            candidate.setInfo(canNode);
        }

出了点问题,我需要设置所有数字以填充到这个新节点中,但我不确定如何正确执行...

我在setInfo上收到错误,并显示the method setInfo(int) in the type LLIntegerNode is not applicable for the arguments (LLIntegerNode)

这是我的LLIntegerNode类

public class LLIntegerNode{

    private int info; // info inside node
    private LLIntegerNode link; //create a link for nodes

    public LLIntegerNode(int info, LLIntegerNode link){ //Constructor
        this.info = info;
        this.link = link;
    }

    public void setInfo(int info){ //Info Setter
        this.info = info;
    }

    public int getInfo(){ //Info Getter
        return info;
    }

    public void setLink(LLIntegerNode link){ //Link setter
        this.link = link;
    }

    public LLIntegerNode getLink(){ //Link getter
        return link;
    }   
}

4 个答案:

答案 0 :(得分:1)

您需要有一个光标才能将元素添加到链接列表中。否则,您只会覆盖列表中的相同元素。

LLIntegerNode head = new LLIntegerNode(9999, null);
LLIntegerNode cursor = head;
for(int j = 9998; j >= 1000; j--){
    LLIntegerNode canNode = new LLIntegerNode(j, null); //new node
    cursor.setLink(canNode);
    cursor = canNode;
}

答案 1 :(得分:0)

您的方法需要int,因此请将j的值传入其中。

public void setInfo(int info) { // Info Setter
    this.info = info;
}
candidate.setInfo(j);

该错误告诉您将LLIntegerNode传递给只接受int的方法。

  LLIntegerNode类型中的

方法setInfo(int)不适用于参数(LLIntegerNode)

您可以将此toString()方法添加到班级LLIntegerNode

@Override
public String toString() {
    return String.format("%s -> %d", link, info);
}

只需执行以下类。

public class LLIntegerNodeDriver {
    public static void main(String[] args) {
        int start = 1000;
        int end = 2000;
        LLIntegerNode head = null;

        for (int info = end - 1; info >= start; info--) {
            head = new LLIntegerNode(info, head);
        }

        System.out.println(head);
    }
}

这将打印:

null -> 1999 -> 1998 -> 1997 -> 1996 -> 1995 -> 1994 -> 1993 -> 1992 -> 1991 -> 1990 -> 1989 -> 1988 -> 1987 -> 1986 -> 1985 -> 1984 -> 1983 -> 1982 -> 1981 -> 1980 -> 1979 -> 1978 -> 1977 -> 1976 -> 1975 -> 1974 -> 1973 -> 1972 -> 1971 -> 1970 -> 1969 -> 1968 -> 1967 -> 1966 -> 1965 -> 1964 -> 1963 -> 1962 -> 1961 -> 1960 -> 1959 -> 1958 -> 1957 -> 1956 -> 1955 -> 1954 -> 1953 -> 1952 -> 1951 -> 1950 -> 1949 -> 1948 -> 1947 -> 1946 -> 1945 -> 1944 -> 1943 -> 1942 -> 1941 -> 1940 -> 1939 -> 1938 -> 1937 -> 1936 -> 1935 -> 1934 -> 1933 -> 1932 -> 1931 -> 1930 -> 1929 -> 1928 -> 1927 -> 1926 -> 1925 -> 1924 -> 1923 -> 1922 -> 1921 -> 1920 -> 1919 -> 1918 -> 1917 -> 1916 -> 1915 -> 1914 -> 1913 -> 1912 -> 1911 -> 1910 -> 1909 -> 1908 -> 1907 -> 1906 -> 1905 -> 1904 -> 1903 -> 1902 -> 1901 -> 1900 -> 1899 -> 1898 -> 1897 -> 1896 -> 1895 -> 1894 -> 1893 -> 1892 -> 1891 -> 1890 -> 1889 -> 1888 -> 1887 -> 1886 -> 1885 -> 1884 -> 1883 -> 1882 -> 1881 -> 1880 -> 1879 -> 1878 -> 1877 -> 1876 -> 1875 -> 1874 -> 1873 -> 1872 -> 1871 -> 1870 -> 1869 -> 1868 -> 1867 -> 1866 -> 1865 -> 1864 -> 1863 -> 1862 -> 1861 -> 1860 -> 1859 -> 1858 -> 1857 -> 1856 -> 1855 -> 1854 -> 1853 -> 1852 -> 1851 -> 1850 -> 1849 -> 1848 -> 1847 -> 1846 -> 1845 -> 1844 -> 1843 -> 1842 -> 1841 -> 1840 -> 1839 -> 1838 -> 1837 -> 1836 -> 1835 -> 1834 -> 1833 -> 1832 -> 1831 -> 1830 -> 1829 -> 1828 -> 1827 -> 1826 -> 1825 -> 1824 -> 1823 -> 1822 -> 1821 -> 1820 -> 1819 -> 1818 -> 1817 -> 1816 -> 1815 -> 1814 -> 1813 -> 1812 -> 1811 -> 1810 -> 1809 -> 1808 -> 1807 -> 1806 -> 1805 -> 1804 -> 1803 -> 1802 -> 1801 -> 1800 -> 1799 -> 1798 -> 1797 -> 1796 -> 1795 -> 1794 -> 1793 -> 1792 -> 1791 -> 1790 -> 1789 -> 1788 -> 1787 -> 1786 -> 1785 -> 1784 -> 1783 -> 1782 -> 1781 -> 1780 -> 1779 -> 1778 -> 1777 -> 1776 -> 1775 -> 1774 -> 1773 -> 1772 -> 1771 -> 1770 -> 1769 -> 1768 -> 1767 -> 1766 -> 1765 -> 1764 -> 1763 -> 1762 -> 1761 -> 1760 -> 1759 -> 1758 -> 1757 -> 1756 -> 1755 -> 1754 -> 1753 -> 1752 -> 1751 -> 1750 -> 1749 -> 1748 -> 1747 -> 1746 -> 1745 -> 1744 -> 1743 -> 1742 -> 1741 -> 1740 -> 1739 -> 1738 -> 1737 -> 1736 -> 1735 -> 1734 -> 1733 -> 1732 -> 1731 -> 1730 -> 1729 -> 1728 -> 1727 -> 1726 -> 1725 -> 1724 -> 1723 -> 1722 -> 1721 -> 1720 -> 1719 -> 1718 -> 1717 -> 1716 -> 1715 -> 1714 -> 1713 -> 1712 -> 1711 -> 1710 -> 1709 -> 1708 -> 1707 -> 1706 -> 1705 -> 1704 -> 1703 -> 1702 -> 1701 -> 1700 -> 1699 -> 1698 -> 1697 -> 1696 -> 1695 -> 1694 -> 1693 -> 1692 -> 1691 -> 1690 -> 1689 -> 1688 -> 1687 -> 1686 -> 1685 -> 1684 -> 1683 -> 1682 -> 1681 -> 1680 -> 1679 -> 1678 -> 1677 -> 1676 -> 1675 -> 1674 -> 1673 -> 1672 -> 1671 -> 1670 -> 1669 -> 1668 -> 1667 -> 1666 -> 1665 -> 1664 -> 1663 -> 1662 -> 1661 -> 1660 -> 1659 -> 1658 -> 1657 -> 1656 -> 1655 -> 1654 -> 1653 -> 1652 -> 1651 -> 1650 -> 1649 -> 1648 -> 1647 -> 1646 -> 1645 -> 1644 -> 1643 -> 1642 -> 1641 -> 1640 -> 1639 -> 1638 -> 1637 -> 1636 -> 1635 -> 1634 -> 1633 -> 1632 -> 1631 -> 1630 -> 1629 -> 1628 -> 1627 -> 1626 -> 1625 -> 1624 -> 1623 -> 1622 -> 1621 -> 1620 -> 1619 -> 1618 -> 1617 -> 1616 -> 1615 -> 1614 -> 1613 -> 1612 -> 1611 -> 1610 -> 1609 -> 1608 -> 1607 -> 1606 -> 1605 -> 1604 -> 1603 -> 1602 -> 1601 -> 1600 -> 1599 -> 1598 -> 1597 -> 1596 -> 1595 -> 1594 -> 1593 -> 1592 -> 1591 -> 1590 -> 1589 -> 1588 -> 1587 -> 1586 -> 1585 -> 1584 -> 1583 -> 1582 -> 1581 -> 1580 -> 1579 -> 1578 -> 1577 -> 1576 -> 1575 -> 1574 -> 1573 -> 1572 -> 1571 -> 1570 -> 1569 -> 1568 -> 1567 -> 1566 -> 1565 -> 1564 -> 1563 -> 1562 -> 1561 -> 1560 -> 1559 -> 1558 -> 1557 -> 1556 -> 1555 -> 1554 -> 1553 -> 1552 -> 1551 -> 1550 -> 1549 -> 1548 -> 1547 -> 1546 -> 1545 -> 1544 -> 1543 -> 1542 -> 1541 -> 1540 -> 1539 -> 1538 -> 1537 -> 1536 -> 1535 -> 1534 -> 1533 -> 1532 -> 1531 -> 1530 -> 1529 -> 1528 -> 1527 -> 1526 -> 1525 -> 1524 -> 1523 -> 1522 -> 1521 -> 1520 -> 1519 -> 1518 -> 1517 -> 1516 -> 1515 -> 1514 -> 1513 -> 1512 -> 1511 -> 1510 -> 1509 -> 1508 -> 1507 -> 1506 -> 1505 -> 1504 -> 1503 -> 1502 -> 1501 -> 1500 -> 1499 -> 1498 -> 1497 -> 1496 -> 1495 -> 1494 -> 1493 -> 1492 -> 1491 -> 1490 -> 1489 -> 1488 -> 1487 -> 1486 -> 1485 -> 1484 -> 1483 -> 1482 -> 1481 -> 1480 -> 1479 -> 1478 -> 1477 -> 1476 -> 1475 -> 1474 -> 1473 -> 1472 -> 1471 -> 1470 -> 1469 -> 1468 -> 1467 -> 1466 -> 1465 -> 1464 -> 1463 -> 1462 -> 1461 -> 1460 -> 1459 -> 1458 -> 1457 -> 1456 -> 1455 -> 1454 -> 1453 -> 1452 -> 1451 -> 1450 -> 1449 -> 1448 -> 1447 -> 1446 -> 1445 -> 1444 -> 1443 -> 1442 -> 1441 -> 1440 -> 1439 -> 1438 -> 1437 -> 1436 -> 1435 -> 1434 -> 1433 -> 1432 -> 1431 -> 1430 -> 1429 -> 1428 -> 1427 -> 1426 -> 1425 -> 1424 -> 1423 -> 1422 -> 1421 -> 1420 -> 1419 -> 1418 -> 1417 -> 1416 -> 1415 -> 1414 -> 1413 -> 1412 -> 1411 -> 1410 -> 1409 -> 1408 -> 1407 -> 1406 -> 1405 -> 1404 -> 1403 -> 1402 -> 1401 -> 1400 -> 1399 -> 1398 -> 1397 -> 1396 -> 1395 -> 1394 -> 1393 -> 1392 -> 1391 -> 1390 -> 1389 -> 1388 -> 1387 -> 1386 -> 1385 -> 1384 -> 1383 -> 1382 -> 1381 -> 1380 -> 1379 -> 1378 -> 1377 -> 1376 -> 1375 -> 1374 -> 1373 -> 1372 -> 1371 -> 1370 -> 1369 -> 1368 -> 1367 -> 1366 -> 1365 -> 1364 -> 1363 -> 1362 -> 1361 -> 1360 -> 1359 -> 1358 -> 1357 -> 1356 -> 1355 -> 1354 -> 1353 -> 1352 -> 1351 -> 1350 -> 1349 -> 1348 -> 1347 -> 1346 -> 1345 -> 1344 -> 1343 -> 1342 -> 1341 -> 1340 -> 1339 -> 1338 -> 1337 -> 1336 -> 1335 -> 1334 -> 1333 -> 1332 -> 1331 -> 1330 -> 1329 -> 1328 -> 1327 -> 1326 -> 1325 -> 1324 -> 1323 -> 1322 -> 1321 -> 1320 -> 1319 -> 1318 -> 1317 -> 1316 -> 1315 -> 1314 -> 1313 -> 1312 -> 1311 -> 1310 -> 1309 -> 1308 -> 1307 -> 1306 -> 1305 -> 1304 -> 1303 -> 1302 -> 1301 -> 1300 -> 1299 -> 1298 -> 1297 -> 1296 -> 1295 -> 1294 -> 1293 -> 1292 -> 1291 -> 1290 -> 1289 -> 1288 -> 1287 -> 1286 -> 1285 -> 1284 -> 1283 -> 1282 -> 1281 -> 1280 -> 1279 -> 1278 -> 1277 -> 1276 -> 1275 -> 1274 -> 1273 -> 1272 -> 1271 -> 1270 -> 1269 -> 1268 -> 1267 -> 1266 -> 1265 -> 1264 -> 1263 -> 1262 -> 1261 -> 1260 -> 1259 -> 1258 -> 1257 -> 1256 -> 1255 -> 1254 -> 1253 -> 1252 -> 1251 -> 1250 -> 1249 -> 1248 -> 1247 -> 1246 -> 1245 -> 1244 -> 1243 -> 1242 -> 1241 -> 1240 -> 1239 -> 1238 -> 1237 -> 1236 -> 1235 -> 1234 -> 1233 -> 1232 -> 1231 -> 1230 -> 1229 -> 1228 -> 1227 -> 1226 -> 1225 -> 1224 -> 1223 -> 1222 -> 1221 -> 1220 -> 1219 -> 1218 -> 1217 -> 1216 -> 1215 -> 1214 -> 1213 -> 1212 -> 1211 -> 1210 -> 1209 -> 1208 -> 1207 -> 1206 -> 1205 -> 1204 -> 1203 -> 1202 -> 1201 -> 1200 -> 1199 -> 1198 -> 1197 -> 1196 -> 1195 -> 1194 -> 1193 -> 1192 -> 1191 -> 1190 -> 1189 -> 1188 -> 1187 -> 1186 -> 1185 -> 1184 -> 1183 -> 1182 -> 1181 -> 1180 -> 1179 -> 1178 -> 1177 -> 1176 -> 1175 -> 1174 -> 1173 -> 1172 -> 1171 -> 1170 -> 1169 -> 1168 -> 1167 -> 1166 -> 1165 -> 1164 -> 1163 -> 1162 -> 1161 -> 1160 -> 1159 -> 1158 -> 1157 -> 1156 -> 1155 -> 1154 -> 1153 -> 1152 -> 1151 -> 1150 -> 1149 -> 1148 -> 1147 -> 1146 -> 1145 -> 1144 -> 1143 -> 1142 -> 1141 -> 1140 -> 1139 -> 1138 -> 1137 -> 1136 -> 1135 -> 1134 -> 1133 -> 1132 -> 1131 -> 1130 -> 1129 -> 1128 -> 1127 -> 1126 -> 1125 -> 1124 -> 1123 -> 1122 -> 1121 -> 1120 -> 1119 -> 1118 -> 1117 -> 1116 -> 1115 -> 1114 -> 1113 -> 1112 -> 1111 -> 1110 -> 1109 -> 1108 -> 1107 -> 1106 -> 1105 -> 1104 -> 1103 -> 1102 -> 1101 -> 1100 -> 1099 -> 1098 -> 1097 -> 1096 -> 1095 -> 1094 -> 1093 -> 1092 -> 1091 -> 1090 -> 1089 -> 1088 -> 1087 -> 1086 -> 1085 -> 1084 -> 1083 -> 1082 -> 1081 -> 1080 -> 1079 -> 1078 -> 1077 -> 1076 -> 1075 -> 1074 -> 1073 -> 1072 -> 1071 -> 1070 -> 1069 -> 1068 -> 1067 -> 1066 -> 1065 -> 1064 -> 1063 -> 1062 -> 1061 -> 1060 -> 1059 -> 1058 -> 1057 -> 1056 -> 1055 -> 1054 -> 1053 -> 1052 -> 1051 -> 1050 -> 1049 -> 1048 -> 1047 -> 1046 -> 1045 -> 1044 -> 1043 -> 1042 -> 1041 -> 1040 -> 1039 -> 1038 -> 1037 -> 1036 -> 1035 -> 1034 -> 1033 -> 1032 -> 1031 -> 1030 -> 1029 -> 1028 -> 1027 -> 1026 -> 1025 -> 1024 -> 1023 -> 1022 -> 1021 -> 1020 -> 1019 -> 1018 -> 1017 -> 1016 -> 1015 -> 1014 -> 1013 -> 1012 -> 1011 -> 1010 -> 1009 -> 1008 -> 1007 -> 1006 -> 1005 -> 1004 -> 1003 -> 1002 -> 1001 -> 1000

答案 2 :(得分:0)

以下代码段不起作用:

LLIntegerNode candidate;   //Node class and Linked List named candidate
for(int j =9999; j >=1000; j--){ 
LLIntegerNode canNode = new LLIntegerNode(j, null); //new node
    candidate.setInfo(canNode);
}

有两个原因

  • candidate未初始化
  • 即使已初始化,for循环也会继续覆盖这些值。

您真正想要的是以下内容(如果我理解正确的话):

LLIntegerNode candidate = new LLIntegerNode();
for(int j =9999; j >=1000; j--){ 
    LLIntegerNode element = new LLIntegerNode(j, null); //new node
    candidate.setLink(element);
    candidate = element;
}

这会将节点添加到列表中。

答案 3 :(得分:0)

我可以看到一些导致你出现问题的事情。我认为一个好的第一步就是写出一些伪代码/写出你想要完成的所需的步骤。

那么在我们开始之前我们还需要什么?

  • 我们需要引用列表的头部,否则我们会丢失其他节点。
  • 我们需要引用列表的尾部,我们将在其上添加新节点
  • 在开头,头部和尾部是同一个节点。

完成后,您可以将剩余的值添加到列表中。要执行此操作,您需要为每个剩余的数字:

  • 使用行
  • 中的下一个值创建一个新节点
  • 将新节点设置为尾引用链接到
  • 的节点
  • 将尾部引用设置为新节点
LLIntegerNode candidate = new LLIntegerNode(1000, null);//the head of the linked list
LLIntegerNode tail = candidate;//the tail reference

for(int j = 10001; j <= 9999; j++){
    LLIntegerNode newNode = new LLIntegerNode(j, null);
    tail.setLink(newNode);
    tail = newNode;
}

在这里构建的单链表中,每个节点只知道链中的下一个节点。它不保留对前一节点的引用。如果你没有保留对列表头部的引用并且不断地将候选者更新为你刚刚添加到列表末尾的新节点,那么你最终只会指向列表的最后一个元素。

由于您希望列表从1000 - 9999开始,因此您需要从前到后构建列表。如果您不想对列表的尾部使用第二个引用并从后到前构建它,则需要使候选者&#39;新节点指向的节点,然后更新候选&#39;指向您创建的新节点。

LLIntegerNode candidate = new LLIntegerNode(9999, null);
for(int j = 9998; int j >= 1000; j--){
    LLIntegerNode newNode = new LLIntegerNode(j, candidate);
    candidate = newNode;
}