關於堆疊 - PCZONE 討論區

返回   PCZONE 討論區 > ▲ -- 電 腦 軟 體 討 論 區 > -- 其 他 軟 體 討 論 版


PCZONE 討論區



通知

-- 其 他 軟 體 討 論 版 包括磁碟或檔案管理工具、掃毒軟體、解壓縮軟體、遠端遙控軟體、備份軟體、傳真軟體、手寫或語音等各種軟體使用經驗討論

會員
關於堆疊
使用堆疊,題目為依序輸入name,age,salary最多為五筆超過顯示stack full,沒有資料顯示empty
我寫ㄉ程式大約如下,但是我輸入name取出時都會顯示亂碼,有人可以幫我改改程式ㄇ??~~謝謝
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define max_size 5
char mystack[max_size];
int mytop=-1;

struct person {
char name[20];
int age;
float salary;
};
struct person x;

void add(int *top,char value)
{
if (*top>=max_size-1) {
printf("stack full");
return;
}
mystack[++*top]=value;
}
char delete1(int *tt)
{
if(*tt==-1) {
printf("stack empty");
return 0;
}
return mystack[(*tt)--];
}
void main()
{
char sel;
char item;
char ch;
clrscr();
for(; {
printf("\n(a)add (b)delete (c)quit");
sel=getche();
switch (sel) {
case ''a'':
printf("\ninput name:");
gets(&x.name);
add(&mytop,x.name);
break;
case ''b'':
ch=delete1(&mytop);
printf("\noutput data is:%s\n",ch);
break;
case ''c'':
exit(0);
break;
}
}
}

回覆
進階會員

試試看這樣.. 可以符合你想做到的功能.
but~ stack 不是這樣動作的, 打從一開始你的程式流程就不對了~

語法:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

#define max_size 5

char *mystack[max_size];
int mytop=-1;

struct person {
	char name[20];
	int age;
	float salary;
};
struct person x;

void add(int *top,char *value)
{
	if (*top>=max_size-1) {
		printf("\nstack full");
		return;
	}

	(*top)++;
	mystack[*top] = new char[strlen(value)+1];
	strcpy(mystack[*top], value);
}

char* delete1(int *tt)
{
	if(*tt==-1) {
		printf("\nstack empty");
		return 0;
	}
	printf("\noutput data is:%s\n", mystack[*tt]);
	delete [] mystack[*tt];
	return mystack[(*tt)--];
}

void main()
{
	char sel;
	char item;

	clrscr();
	for( ; ; ) {
		printf("\n(a)add (b)delete (c)quit:");
		sel=getche();
		switch (sel) {
			case 'a':
				printf("\ninput name:");
				gets(x.name);
				add(&mytop,x.name);
				break;
			case 'b':
				delete1(&mytop);
				break;
			case 'c':
				exit(0);
				break;
		}
	}
}
回覆
會員

引用:
最初由 xbug 發表
試試看這樣.. 可以符合你想做到的功能.
but~ stack 不是這樣動作的, 打從一開始你的程式流程就不對了~

[CODE]
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

#define ...
謝謝你
不過我還要同時輸入年紀跟薪水
請問該如何加進去ㄋ??
回覆
會員

謝謝你
不過我還要同時輸入年紀跟薪水
請問該如何加進去ㄋ??

回覆







 XML   RSS 2.0   RSS 
本站使用 vBulletin 合法版權程式
站務信箱 : [email protected]

本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。