自己手打的,调试到 0 error 0 warning(s),可能代码还不够简洁,就当是一个记录吧。
头文件 定义单链表数据结构
#pragma once
typedef struct SLNode {
int data;
SLNode* next;
}SLNode;
主函数
#include <iostream>
#include "head.h"
using namespace std;
int InputValue(int& num);
void CreateSingleList(SLNode*& p);
void PrintList(SLNode* p);
int main()
{
int choice;
SLNode* p = (SLNode*)malloc(sizeof(SLNode));
CreateSingleList(p);
cout << "1 打印单链表\n2 退出" << endl;
scanf_s("%d",&choice);
if (choice == 1)
{
PrintList(p);
return 0;
}
if (choice == 2)
{
return 0;
}
cout << "\n输入有误!\n" << endl;
return 0;
}
void CreateSingleList(SLNode*& p)
{
int SingleListlength,data;
cout << "请输入链表长度:" << endl;
scanf_s("%d" , &SingleListlength);
SLNode* q = (SLNode*)malloc(sizeof(SLNode));
q = p;
for (int i = 0; i < SingleListlength;++i)
{
SLNode* temp = (SLNode*)malloc(sizeof(SLNode));
cout << "请输入第" << (i + 1) << "个结点的值:";
if (q != NULL)
{
q->data = InputValue(data);
q->next = temp;
q = temp;
}
}
if(q!=NULL)
{
q->next = NULL;
}
cout << "\n已成功初始化单链表."<<endl;
}
int InputValue(int &num)
{
scanf_s("%d", &num);
return num;
}
void PrintList(SLNode* p)
{
cout << "\n即将打印链表…\n";
while(p->next != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout <<"\n\n";
}
中间遇到了几个小问题,总结一下:
1、用malloc为一个结点分配内存空间后,要判断是否为空再使用 2、尾结点的指针记得要置空
|