主函数这里
Linklist Listprintf("输入创建链表的长度:")
scanf("%d",&num)
CreateList_H(List,num) //创建链表
改为
LNode List
printf("输入创建链表的长度:")
scanf("%d",&num)
CreateList_H(&List,num) //创建链表
函数内在堆上分配好内存,但是 没有传递到栈上
另外 你的变量名很迷人
可以用头插法或尾插法(下面用尾插法)
思想为:让你输入一串字符串, 为每个字符创建一个节点,添加到链表的后面.直到输入的字符为@为止.
#include <stdio.h>
#include <malloc.h>
typedef char datatype
typedef struct node
{
datatype data
struct node *next
}linklist
linklist *p,*q,*head
main()
{
char c
head = (linklist *)malloc(sizeof(linklist))
head->next = NULL
p = head
c = getchar()
while(c != '@')
{
q = (linklist *)malloc(sizeof(linklist))
q->data = c
q->next = NULL
p->next = q
p = p->next
c = getchar()
}
}
可以在 main() 最后加上
for(p=head->nextp!=NULLp=p->next)
{
printf("%5c", p->data)
}
来测试结果,本人已经TC 2.0下面测试通过.
用一个结构体struct Node{
int value
struct Node *next
}
value是这个元素的值,*next是指向想一个元素的指针,
跟数组的比较,数组可以直接通过下标查询其中的元素比如a[9],而单链表只能遍历第9个元素以前的所有元素才能找到第9个元素。单链表的插入和删除比数组简单