typedef struct StackRecord StackRecord;
typedef struct StackRecord* Stack;
这两段代码是什么意思?请详细解释一下,感谢
分别给结构体类型StackRecord 定义了一个别名,其中一个是普通类型,一个是指针类型
这样后续代码如果要定义结构体变量,可以直接用StackRecord来定义,而不需要写成struct StackRecord 了,代码可以更简单
如果定义结构体指针变量,那么只需要写成Stack p这样子,不需要写struct StackRecord * p了
typedef关键字用于为一个类型定义别名
比如 接下来如果出现这样一行代码
Stack a;
意思是定义一个指向StackRecord类型指针a
#include<iostream>
using namespace std;
#define SIZE 10
typedef struct node
{
int data;//数据域
struct node * next;//指针域
}Lnode, * SLinkList;
SLinkList Init_List(Lnode *&L)
{
L = (SLinkList)malloc(sizeof(Lnode));
L->next = NULL;
return L;
}
SLinkList Creat_List(Lnode* &L,int n)//头插建表
{
srand((unsigned int)time(NULL));
SLinkList p = L;
for (int i = 0; i < n; i++)
{
int e = rand() % 20 + 1;
SLinkList s = (SLinkList)malloc(sizeof(Lnode));
s->next = p->next;
p->next = s;
s->data = e;
}
return L;
}
int count_List(Lnode *& L)
{
int count = 0;
SLinkList p = L->next;
while (p)
{
count++;
p = p->next;
}
return count;
}
int find_List(SLinkList L,int v)
{
SLinkList p = L->next;
int i = 1;
while (i < v && p->next)
{
p = p->next;
i++;
}
return p->data;
}
void display_List(SLinkList L)
{
SLinkList p = L->next;
while (p)
{
cout << p->data << " ";
p = p->next;
}
}
int main()
{
srand((unsigned int)time(NULL));
int n = rand()%5 + 5, count = 0, v = 0;
SLinkList L;
L = Init_List(L);
cout << "随机插入元素完成:"<<endl;
L = Creat_List(L,n);
count = count_List(L);
cout << "单链表长度为:" << count << endl;
cout << "遍历单链表结果为:" << endl;
display_List(L);
cout << endl;
cout << "要查找元素的位置为:"; cin >> v;
int value = find_List(L, v);
cout << "查找结果为:" << value << endl;
}