关于栈中typedef的一个问题,

typedef struct StackRecord StackRecord;
typedef struct StackRecord* Stack;

这两段代码是什么意思?请详细解释一下,感谢

分别给结构体类型StackRecord 定义了一个别名,其中一个是普通类型,一个是指针类型
这样后续代码如果要定义结构体变量,可以直接用StackRecord来定义,而不需要写成struct StackRecord 了,代码可以更简单
如果定义结构体指针变量,那么只需要写成Stack p这样子,不需要写struct StackRecord * p了

typedef关键字用于为一个类型定义别名
比如 接下来如果出现这样一行代码

Stack a;

意思是定义一个指向StackRecord类型指针a

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/1031536
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:c语言中typedef的用法
  • 除此之外, 这篇博客: 详解数据结构单链表,你真的了解typedef结合结构体的用法和链表结构参数形式吗,这里给出数据结构极常见问题的解答中的 完整代码实现 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #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;
    }