#include
#include
#include
#define ElemType int
typedef struct Node {
ElemType data;
struct Node* Next;
}LinkList;
void initlist(LinkList * L)
{
L = (LinkList*)malloc(sizeof(LinkList));
L->Next = NULL;
}
void CreateFromHead(LinkList *L,int a[]){
LinkList *s,*r;
r = L;
char c;
int flag = 1;
while (flag)
{
c = getchar();
if (c != '10') {
for (int i = 0; i < 10; i++) {
s = (LinkList*)malloc(sizeof(LinkList));
s->data = a[i];
s->Next = r->Next;
r->Next = s;
}
}
else flag = 0;
}
}
int main()
{
LinkList *L;
int a[10] = { 8,18,28,38,48,58,68,78,88,98 };
initlist(L);
CreateFromHead(L,a);
return 0;
}
错误如下
主要函数里*L只是一个指针,没有指向具体的地址。
函数中修改指针的指向并通过参数带回,需要声明为指针的指针,void initlist(LinkList ** L)
调用:initlist(&L);
回车的ascii是10,不需要引号,if (c != 10)
package linkedlist;
public class SingleLInkedList {
public static void main(String[] args) {
HeroNode h1 = new HeroNode(1,"宋江","rainontime");
HeroNode h2 = new HeroNode(2,"wuyong","cleverman");
HeroNode h3 = new HeroNode(3,"likui","balckHurricane");
SLL s1 = new SLL();
s1.add(h1);
s1.add(h2);
s1.add(h3);
s1.show();
}
}
//定义单链表SingleLinkedList
class SLL{
//初始化头节点,头节点不要动,不用于存放数据
HeroNode head = new HeroNode(0,"","");
//添加节点到单链表
//找到当前链表的最后节点,
//将最后节点的next指向新的节点
public void add(HeroNode heroNode){
HeroNode temp = head;
//遍历链表找到最后,头节点不能动,就创建辅助变量temp
while (true){
if(temp.next == null){
break;
//是最后一个节点,最后一个节点的指针为null,跳出循环
}
temp = temp.next;
//不是最后一个,就将节点向后移
}
temp.next = heroNode;
}
//显示链表,遍历
public void show(){
//判断链表是否为空
//头节点不能动,要辅助变量来帮忙遍历
HeroNode temp = head;
//判断链表是否为空
if (temp.next == null){
System.out.println("链表为空,不能够输出");
}
//输出节点的信息,注意将辅助变量temp后移,否则陷入死循环
do{
System.out.println(temp.next);
temp = temp.next;
}while(temp.next != null);
}
}
class HeroNode{
int HeroNO;
String HeroName;
String HeroNIckName;
HeroNode next;
//在这里不能够在构造方法里添加next,添加的next必须是初始化,但是最后一个变量的next是空的,每一个添加才给它赋值,所以不可以初始化
public HeroNode(int heroNO,String heroName,String heroNIckName){
this.HeroNO = heroNO;
this.HeroName = heroName;
this.HeroNIckName = heroNIckName;
}
@Override
public String toString() {
return "HeroNode{" +
"HeroNO=" + HeroNO +
", HeroName='" + HeroName + '\'' +
", HeroNIckName='" + HeroNIckName + '\'' + '}';
}
}