C/C++代码,码尾有图,附测试代码。
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<iostream>
using namespace std;
//声明节点的结构
typedef struct LNode {
int data; //存值
struct LNode *next; //指向下一个节点的指针
}LNode, *LinkList;
LinkList CreateList(int n); //创建链表函数
void print(LinkList h); //输出链表内容
int main()
{
LinkList Head = NULL; //创建头指针
int n;
scanf("%d", &n);
Head = CreateList(n);
printf("刚刚建立的各个链表元素的值为:\n");
print(Head);
free(Head); //释放内存
printf("\n\n");
system("pause");
return 0;
}
LinkList CreateList(int n)
{
LinkList L, p, q;
int i;
L = (LNode*)malloc(sizeof(LNode)); //创建头节点
if (!L)return 0;
L->next = NULL;
cout << "L: " << (void *)L<<" Ldata: "<<(void *)L->data<<" Lnext: "<<(void *)L->next << endl;
q = L;
cout << "q地址: " << (void *)q << " qdata: " << (void *)q->data << " qnext: " << (void *)q->next << endl;
for (i = 1; i <= n; i++)
{
p = (LinkList)malloc(sizeof(LNode)); //申请空间
cout << "p结构体地址:"<< (void *)p <<endl<<endl;
printf("请输入第%d个元素的数值:", i);
scanf("%d", &(p->data));
cout << "pdata地址:" << (void *)p->data << endl;
p->next = NULL; //尾巴的next为空
cout << "pnext地址:" << (void *)p->next << endl;
q->next = p;
cout << "qnext地址:" << (void *)q->next << endl;
q = p;
cout << "q地址:" << (void *)q << endl;
p = NULL; //防止野指针
}
return L;
}
void print(LinkList h)
{
LinkList p = h->next;
while (p != NULL) {
printf("%d \n", p->data);
cout<<"输出p: "<<p<<" pdata: "<<p->data<<" pnext: "<<p->next<<endl;
p = p->next;
}
free(p); //释放内存
}
输出
请输入链表元素的值个数:
3
L: 0000000000354B80 Ldata: FFFFFFFFCDCDCDCD Lnext: 0000000000000000
q地址: 0000000000354B80 qdata: FFFFFFFFCDCDCDCD qnext: 0000000000000000
p结构体地址:0000000000354CC0
请输入第1个元素的数值:1
pdata地址:0000000000000001
pnext地址:0000000000000000
qnext地址:0000000000354CC0
q地址:0000000000354CC0
p结构体地址:0000000000355030
请输入第2个元素的数值:2
pdata地址:0000000000000002
pnext地址:0000000000000000
qnext地址:0000000000355030
q地址:0000000000355030
p结构体地址:0000000000355080
请输入第3个元素的数值:3
pdata地址:0000000000000003
pnext地址:0000000000000000
qnext地址:0000000000355080
q地址:0000000000355080
刚刚建立的各个链表元素的值为:
1
输出p: 0000000000354CC0 pdata: 1 pnext: 0000000000355030
2
输出p: 0000000000355030 pdata: 2 pnext: 0000000000355080
3
输出p: 0000000000355080 pdata: 3 pnext: 0000000000000000
请按任意键继续. . .
测试代码:https://download.youkuaiyun.com/download/Mr_Bobcp/12370102
源代码是这些文件。