链表初步(一):顺序表与单链表定义
一、顺序表(传递地址)
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
//顺序表存储结构
const int MAXSIZE = 80; //预设的存储空间最大容量
typedef struct{
int data[MAXSIZE]; //顺序存储空间
int last; //当前长度为last, last =-1为空表
} SeqList;
//顺序表初始化
SeqList *init_SeqList()
{
SeqList *L;
L = new SeqList;
//L = (SeqList *)malloc(sizeof(SeqList));
L->last = -1;
return L;
}
//顺序表读入数据
void input(SeqList *L)
{
L->last++;
while(cin >> L->data[L->last])
L->last++;
L->last--;
}
//顺序表输出
void print(SeqList *L)
{
for(int i = 0; i < L->last; i++)
cout << L->data[i] << " ";
cout << endl << L->last + 1;
}
int main()
{
//freopen("SeqList.in","r",stdin);
//freopen("SeqList.out","w",stdout);
SeqList *L;
L = init_SeqList();
input(L);
print(L);
delete L; //free(L);
fclose(stdin);
fclose(stdout);
return 0;
}
二、顺序表(传递引用)
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
//顺序表存储结构
const int MAXSIZE = 80; //预设的存储空间最大容量
typedef struct{
int data[MAXSIZE]; //顺序存储空间
int last; //当前长度为last, last =-1为空表
} SeqList;
//顺序表初始化
void init_SeqList(SeqList &L)
{
L.last = -1;
}
//顺序表读入数据
void input(SeqList &L)
{
while(cin >> L.data[++L.last]);
L.last--;
}
//顺序表输出
void print(const SeqList &L)
{
for(int i = 0; i < L.last; i++)
cout << L.data[i] << " ";
cout << endl << L.last + 1;
}
int main()
{
//freopen("SeqList.in","r",stdin);
// freopen("SeqList.out","w",stdout);
SeqList L;
init_SeqList(L);
input(L);
print(L);
fclose(stdin);
fclose(stdout);
return 0;
}
三、单链表定义
(1)定义类型和说明变量;
struct Node
{
int data;
Node * next;
};
Node * p;
(2)申请存储单元;
p = new Node;//指针变量的基本类型决定了空间大小;
(3)指针的赋值;
此处我们定义指针的变量名为Kiana;
则
Kiana = NULL;//初始化指针,不指向任何存储单元