今天打的一部分链式栈
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 typedef int ElemType; 5 /*链栈结点*/ 6 typedef struct Node{ 7 ElemType data; 8 struct Node *next; 9 }LinkStackNode; 10 /*链栈结构*/ 11 typedef struct{ 12 LinkStackNode *top; 13 int length; 14 }LinkStack; 15 //初始化链式栈 16 void InitStack(LinkStack *S){ 17 S->top=NULL; 18 S->length=0; 19 printf("初始化成功\n"); 20 } 21 //入栈 22 int PUSH(LinkStack *S){ 23 int n; 24 LinkStackNode *x=(LinkStackNode*)malloc(sizeof(LinkStackNode)); 25 if(x==NULL){ 26 return printf("申请空间失败\n"); 27 } 28 printf("请输入你想入栈的数\n"); 29 scanf("%d",&n); 30 x->data=n; 31 x->next=S->top;//插入一个新结点在头部 32 S->top=x;//将头结点指针指向该结点 33 S->length++; 34 return printf("入栈成功\n"); 35 } 36 int Pop(LinkStack *S,ElemType *x){ 37 LinkStackNode *temp=S->top;//将temp指针指向头结点; 38 //移动栈顶指针 39 S->top=temp->next;//将头结点指针指向temp指针的下一位 40 S->length--; 41 *x=temp->data; 42 free(temp); //释放temp 43 printf("出栈成功"); 44 } 45 int main(){ 46 LinkStack S; 47 int x; 48 49 InitStack(&S); 50 51 PUSH(&S); 52 53 Pop(&S,&x); 54 55 printf("%d",x); 56 57 58 59 60 61 } 62 63
暂时只打了出栈和入栈。