2015-9-29
来源:互联网 发布:电脑淘宝怎么删除评价 编辑:程序博客网 时间:2024/06/06 13:19
今天是周二,上午睡到9点才起,吃了一个香蕉一个苹果(某人晚上专程给买的 ps:nuannuandahentiexin)然后匆忙洗刷过后就上cortex了,中午订了外卖吃的土豆片和豆芽,没午休。吃过饭后写了点代码,是有关于数据结构栈的,下午某人没午休就来送水,说好的是来学习的,结果来到倒头就睡。来到手机还老黑屏,鼓捣了一下她的手机,重新刷的系统,完美。弄好了某人还不满意嫌什么比之前卡了好多,在我看来比我的手机快多了好不好。作为奖励,把她闲置的优盘送给我了,然后又是各种复制压缩备份,在这里不得不吐槽一下腾讯的微云,各种渣不说还有上传空间大小限制,哎,果断放弃,以后备份还是找大百度吧,省心省力上传速度还快。一下午就这样过去了,只写了个栈的小程序还有个尚未完成的链表程序(代码见附件)。调试的时候遇到各种各样的问题,各种崩溃。
_____________________________________分割线___________________________________________
就像 bool is_empty(PSTACK); (ps:此行代码为声明函数)
编译器提示:
--------------------Configuration: stack - Win32 Debug--------------------
Compiling...stack.cC:\Users\Administrator\Desktop\stack.c(33) : error C2061: syntax error : identifier 'is_empty'C:\Users\Administrator\Desktop\stack.c(33) : error C2059: syntax error : ';'C:\Users\Administrator\Desktop\stack.c(33) : error C2059: syntax error : 'type'C:\Users\Administrator\Desktop\stack.c(50) : warning C4013: 'delete_s' undefined; assuming extern returning intC:\Users\Administrator\Desktop\stack.c(92) : warning C4013: 'is_empty' undefined; assuming extern returning intC:\Users\Administrator\Desktop\stack.c(127) : error C2061: syntax error : identifier 'is_empty'C:\Users\Administrator\Desktop\stack.c(127) : error C2059: syntax error : ';'C:\Users\Administrator\Desktop\stack.c(127) : error C2059: syntax error : 'type'执行 cl.exe 时出错.stack.obj - 1 error(s), 0 warning(s)
看到这个错误,起先以为是这个编译器不支持bool类型呢,结果自己写了个小程序测试的时候竟然成功的运行了,你没有看错就是成功的运行了,尼玛,这到底是个什么情况啊,现在我还是没搞懂到底哪里出了问题。既然这样不行也只能出绝招了:
#define true 1#define false 0
int is_empty(PSTACK ps){if(ps->pTop == ps->pBottom)return true;else return false;}
完美编译通过
_____________________________________分割线___________________________________________
在写出栈函数的时候也有点小问题,没有闹明白,这样写的时候是可以正常编译通过的:
==============================================
elemtype out(PSTACK ps){if(is_empty(ps)){printf("delete fail...\n");exit(-1);}else{elemtype data = ps->pTop->data;PNODE p = ps->pTop;ps->pTop = ps->pTop->pNext;free(p);return data;}
}==============================================
但是这样写的时候就是不行:
elemtype out(PSTACK ps){elemtype data; if(is_empty(ps)){printf("delete fail...\n");exit(-1);}else{data = ps->pTop->data;PNODE p = ps->pTop;//此行为101行ps->pTop = ps->pTop->pNext;free(p);return data;}}
编译器是这样说的:
Compiling...stack.cC:\Users\Administrator\Desktop\stack.c(101) : error C2275: 'PNODE' : illegal use of this type as an expression C:\Users\Administrator\Desktop\stack.c(14) : see declaration of 'PNODE'C:\Users\Administrator\Desktop\stack.c(101) : error C2146: syntax error : missing ';' before identifier 'p'C:\Users\Administrator\Desktop\stack.c(101) : error C2065: 'p' : undeclared identifierC:\Users\Administrator\Desktop\stack.c(101) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct Node *'C:\Users\Administrator\Desktop\stack.c(103) : warning C4022: 'free' : pointer mismatch for actual parameter 1C:\Users\Administrator\Desktop\stack.c(110) : error C2371: 'traverse' : redefinition; different basic types C:\Users\Administrator\Desktop\stack.c(36) : see declaration of 'traverse'执行 cl.exe 时出错.stack.obj - 1 error(s), 0 warning(s)
_____________________________________分割线___________________________________________
尽管出了一些不知名的小错误,最后代码经过修改之后还是成功编译运行了
下面是修改之后能成功编译运行的代码 :
_____________________________________源代码___________________________________________
#include <stdio.h>#include <malloc.h>#include <stdlib.h>#define true 1#define false 0
typedef int elemtype;
//定义结点typedef struct Node{elemtype data;//数据域struct Node * pNext;//指针域}NODE,*PNODE;//NODE等价于struct Node, PNODE等价于struct Node*
//定义栈typedef struct Stack{PNODE pTop;//栈顶指针PNODE pBottom;//栈底指针}STACK,*PSTACK;
//声明初始化栈函数void init(PSTACK);
//声明压栈函数void push(PSTACK,elemtype);
//声明出栈函数elemtype out(PSTACK);
//声明栈是否为空int is_empty(PSTACK);
//声明遍历栈函数void traverse(PSTACK);
int main(void){STACK S;//定义了一个栈变量Selemtype data;//定义了一个elemtype类型的变量datainit(&S); //初始化栈push(&S,1);//压栈push(&S,2);push(&S,3);push(&S,4);traverse(&S);//遍历栈中数据并打印data = out(&S); //将出栈的结点数据返回并赋值给dataprintf("chuzhan data is:%d\n",data);traverse(&S);return 0;}
void init(PSTACK ps){ps->pTop = (PNODE)malloc(sizeof(NODE)); //动态分配sizeof(NODE)大小的内存空间,pTop指针指向这片内存空间的首地址if((NULL == ps->pTop)) //如果请求分配内存空间失败,则终止该程序{printf("init fail....\n");exit(-1);}else{ps->pBottom = ps->pTop;//栈顶指针指向头结点ps->pTop->pNext = NULL;//将头结点的指针域置为NULL}}
void push(PSTACK ps,elemtype data){PNODE pNew = (PNODE)malloc(sizeof(NODE));if(NULL == pNew){printf("push fail...\n");exit(-1);}else{pNew->data = data;pNew->pNext = ps->pTop;ps->pTop = pNew;}}
elemtype out(PSTACK ps){if(is_empty(ps)){printf("delete fail...\n");exit(-1);}else{elemtype data = ps->pTop->data;PNODE p = ps->pTop;ps->pTop = ps->pTop->pNext;free(p);return data;}
}
void traverse(PSTACK ps){if(is_empty(ps)){printf("traverse fail...\n");exit(-1);}else{PNODE p = ps->pTop;while(p != ps->pBottom){printf("%d ",p->data);p = p->pNext;}printf("\n");}}
int is_empty(PSTACK ps){if(ps->pTop == ps->pBottom)return true;else return false;} _____________________________________源代码___________________________________________
_____________________________________分割线___________________________________________
就像 bool is_empty(PSTACK); (ps:此行代码为声明函数)
编译器提示:
--------------------Configuration: stack - Win32 Debug--------------------
看到这个错误,起先以为是这个编译器不支持bool类型呢,结果自己写了个小程序测试的时候竟然成功的运行了,你没有看错就是成功的运行了,尼玛,这到底是个什么情况啊,现在我还是没搞懂到底哪里出了问题。既然这样不行也只能出绝招了:
#define true 1
int is_empty(PSTACK ps)
完美编译通过
_____________________________________分割线___________________________________________
在写出栈函数的时候也有点小问题,没有闹明白,这样写的时候是可以正常编译通过的:
==============================================
elemtype out(PSTACK ps)
{
if(is_empty(ps))
{
printf("delete fail...\n");
exit(-1);
}
else
{
elemtype data = ps->pTop->data;
PNODE p = ps->pTop;
ps->pTop = ps->pTop->pNext;
free(p);
return data;
}
}
==============================================但是这样写的时候就是不行:
elemtype out(PSTACK ps)
{
elemtype data;
if(is_empty(ps))
{
printf("delete fail...\n");
exit(-1);
}
else
{
data = ps->pTop->data;
PNODE p = ps->pTop;//此行为101行
ps->pTop = ps->pTop->pNext;
free(p);
return data;
}
}
编译器是这样说的:
Compiling...
stack.c
C:\Users\Administrator\Desktop\stack.c(101) : error C2275: 'PNODE' : illegal use of this type as an expression
C:\Users\Administrator\Desktop\stack.c(14) : see declaration of 'PNODE'
C:\Users\Administrator\Desktop\stack.c(101) : error C2146: syntax error : missing ';' before identifier 'p'
C:\Users\Administrator\Desktop\stack.c(101) : error C2065: 'p' : undeclared identifier
C:\Users\Administrator\Desktop\stack.c(101) : warning C4047: '=' : 'int ' differs in levels of indirection from 'struct Node *'
C:\Users\Administrator\Desktop\stack.c(103) : warning C4022: 'free' : pointer mismatch for actual parameter 1
C:\Users\Administrator\Desktop\stack.c(110) : error C2371: 'traverse' : redefinition; different basic types
C:\Users\Administrator\Desktop\stack.c(36) : see declaration of 'traverse'
执行 cl.exe 时出错.
stack.obj - 1 error(s), 0 warning(s)
_____________________________________分割线___________________________________________
尽管出了一些不知名的小错误,最后代码经过修改之后还是成功编译运行了
下面是修改之后能成功编译运行的代码 :
_____________________________________源代码___________________________________________
_____________________________________分割线___________________________________________
尽管出了一些不知名的小错误,最后代码经过修改之后还是成功编译运行了
下面是修改之后能成功编译运行的代码 :
_____________________________________源代码___________________________________________
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef int elemtype;
//定义结点
typedef struct Node
{
elemtype data;//数据域
struct Node * pNext;//指针域
}NODE,*PNODE;//NODE等价于struct Node, PNODE等价于struct Node*
//定义栈
typedef struct Stack
{
PNODE pTop;//栈顶指针
PNODE pBottom;//栈底指针
}STACK,*PSTACK;
//声明初始化栈函数
void init(PSTACK);
//声明压栈函数
void push(PSTACK,elemtype);
//声明出栈函数
elemtype out(PSTACK);
//声明栈是否为空
int is_empty(PSTACK);
//声明遍历栈函数
void traverse(PSTACK);
int main(void)
{
STACK S;//定义了一个栈变量S
elemtype data;//定义了一个elemtype类型的变量data
init(&S); //初始化栈
push(&S,1);//压栈
push(&S,2);
push(&S,3);
push(&S,4);
traverse(&S);//遍历栈中数据并打印
data = out(&S); //将出栈的结点数据返回并赋值给data
printf("chuzhan data is:%d\n",data);
traverse(&S);
return 0;
}
void init(PSTACK ps)
{
ps->pTop = (PNODE)malloc(sizeof(NODE)); //动态分配sizeof(NODE)大小的内存空间,pTop指针指向这片内存空间的首地址
if((NULL == ps->pTop)) //如果请求分配内存空间失败,则终止该程序
{
printf("init fail....\n");
exit(-1);
}
else{
ps->pBottom = ps->pTop;//栈顶指针指向头结点
ps->pTop->pNext = NULL;//将头结点的指针域置为NULL
}
}
void push(PSTACK ps,elemtype data)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew)
{
printf("push fail...\n");
exit(-1);
}
else
{
pNew->data = data;
pNew->pNext = ps->pTop;
ps->pTop = pNew;
}
}
elemtype out(PSTACK ps)
{
if(is_empty(ps))
{
printf("delete fail...\n");
exit(-1);
}
else
{
elemtype data = ps->pTop->data;
PNODE p = ps->pTop;
ps->pTop = ps->pTop->pNext;
free(p);
return data;
}
}
void traverse(PSTACK ps)
{
if(is_empty(ps))
{
printf("traverse fail...\n");
exit(-1);
}
else
{
PNODE p = ps->pTop;
while(p != ps->pBottom)
{
printf("%d ",p->data);
p = p->pNext;
}
printf("\n");
}
}
int is_empty(PSTACK ps)
{
if(ps->pTop == ps->pBottom)
return true;
else
return false;
}
_____________________________________源代码___________________________________________
0 0
- 2015-9-29
- 2015-9-29
- 二维数组求鞍点 ---- 2015/9/29
- 2015年9月29笔试总结
- 2015年9月29日 第一篇 反思
- 9-29
- 摸索着的坚持!!!!2015年9月29日13:14
- 2015 01 29
- 2015 01 29
- 2015-05-29
- 2015-6-29学习
- 2015-07-29总结
- 2015/07/29
- 2015-07-29
- 2015-11-29
- 2015-12-29
- 2015-12-29 FFC
- 2015-9-9
- assets文件夹资源的访问
- Codeforces 342 A. Xenia and Divisors
- hdu 5437 Alisha’s Party 优先队列
- IE部分兼容
- JavaScript中简单的数组使用及明细处理
- 2015-9-29
- 字符交替(算法)
- 重载与模板
- 文件读写
- hdu 5462 Manors(半平面交)
- 前端学习过程(不断更新)
- 《Python基础教程(第2版 修订版)》 第1章 快速改造:基础知识(学习笔记)
- VC++多线程编程
- 华丽转身——英语总结