用c++设计一个线性表,采用链式存储结构,完成创建、入栈或出栈
时间: 2023-05-19 21:06:37 浏览: 114
好的,我可以回答这个问题。以下是一个用 C 语言设计的链式存储结构的线性表,包括创建、入栈和出栈操作的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node *next;
} Node;
// 定义链表结构体
typedef struct List {
Node *head;
int length;
} List;
// 创建链表
List *createList() {
List *list = (List *)malloc(sizeof(List));
list->head = NULL;
list->length = 0;
return list;
}
// 入栈操作
void push(List *list, int data) {
Node *node = (Node *)malloc(sizeof(Node));
node->data = data;
node->next = list->head;
list->head = node;
list->length++;
}
// 出栈操作
int pop(List *list) {
if (list->head == NULL) {
printf("栈已空\n");
return -1;
}
int data = list->head->data;
Node *temp = list->head;
list->head = list->head->next;
free(temp);
list->length--;
return data;
}
int main() {
List *list = createList();
push(list, 1);
push(list, 2);
push(list, 3);
printf("出栈元素:%d\n", pop(list));
printf("出栈元素:%d\n", pop(list));
printf("出栈元素:%d\n", pop(list));
printf("出栈元素:%d\n", pop(list));
return 0;
}
```
这个程序实现了一个链式存储结构的线性表,包括创建、入栈和出栈操作。在入栈操作中,我们创建一个新的节点,将其插入到链表的头部;在出栈操作中,我们从链表的头部取出一个节点,并将其从链表中删除。
阅读全文