标签:结构体 style 表的操作 erro define typedef its alt node
栈的链表的操作和线性表的链式存储结构差不多。
我们用图来形象表达一下
线性表的顺序存储结构:
链栈:
链栈的基本操作有栈的初始化、插入数据、删除数据、遍历栈
对应的代码为:
//栈的初始化 int InitStack(Stack *stack){ stack->top=stack->bottom=NULL; stack->stack_size=SIZE; return OK; } //插入数据 int Push(Stack *stack){ int data; Node *newNode=(Node *)malloc(sizeof(Node)); newNode->next=stack->top; stack->top=newNode; printf("请输入要插入的元素的值:"); scanf("%d",&data); stack->top->data=data; return OK; } //删除数据 int Pop(Stack *stack){ Node *p; printf("%d",stack->top->data); p=stack->top->next; free(stack->top); stack->top=p; return OK; } //遍历栈 int print(Stack *stack){ while(stack->top!=NULL){ printf("%d",stack->top->data); stack->top=stack->top->next; } return OK; }
这里的结构体要定义两个,一个用来创建栈,一个用来创建结点。对应的代码为:
//创建结点 typedef struct Node{ int data; struct Node *next; }Node; //创建栈 typedef struct Stack{ Node *top; Node *bottom; int stack_size; }Stack;
完整代码为:
1 #define OK 1 2 #define ERROR 0 3 #define SIZE 100 4 typedef struct Node{ 5 int data; 6 struct Node *next; 7 }Node; 8 typedef struct Stack{ 9 Node *top; 10 Node *bottom; 11 int stack_size; 12 }Stack; 13 //栈的初始化 14 int InitStack(Stack *stack){ 15 stack->top=stack->bottom=NULL; 16 stack->stack_size=SIZE; 17 return OK; 18 } 19 //插入数据 20 int Push(Stack *stack){ 21 int data; 22 Node *newNode=(Node *)malloc(sizeof(Node)); 23 newNode->next=stack->top; 24 stack->top=newNode; 25 printf("请输入要插入的元素的值:"); 26 scanf("%d",&data); 27 stack->top->data=data; 28 return OK; 29 } 30 //删除数据 31 int Pop(Stack *stack){ 32 Node *p; 33 printf("%d",stack->top->data); 34 p=stack->top->next; 35 free(stack->top); 36 stack->top=p; 37 return OK; 38 } 39 //遍历栈 40 int print(Stack *stack){ 41 while(stack->top!=NULL){ 42 printf("%d",stack->top->data); 43 stack->top=stack->top->next; 44 } 45 return OK; 46 } 47 int main() 48 { 49 Stack a; 50 InitStack(&a); 51 Push(&a); 52 Push(&a); 53 printf("删除的元素是:"); 54 Pop(&a); 55 printf("剩余的元素为:"); 56 print(&a); 57 return 0; 58 }
运行结果为:
标签:结构体 style 表的操作 erro define typedef its alt node
原文地址:https://www.cnblogs.com/Jack-son/p/14872800.html