關於堆疊

顯示結果從第 1 筆 到 4 筆,共計 4 筆

主題: 關於堆疊

  1. #1
    會員
    註冊日期
    2002-07-25
    討論區文章
    468

    關於堆疊

    使用堆疊,題目為依序輸入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;
    }
    }
    }



  2. #2
    進階會員
    註冊日期
    2000-10-27
    討論區文章
    505
    試試看這樣.. 可以符合你想做到的功能.
    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;
    		}
    	}
    }
    ...

  3. #3
    會員
    註冊日期
    2002-07-25
    討論區文章
    468
    最初由 xbug 發表
    試試看這樣.. 可以符合你想做到的功能.
    but~ stack 不是這樣動作的, 打從一開始你的程式流程就不對了~

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

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

  4. #4
    會員
    註冊日期
    2002-07-25
    討論區文章
    468
    謝謝你
    不過我還要同時輸入年紀跟薪水
    請問該如何加進去ㄋ??

類似的主題

  1. 3com 4400 PWR Switch堆疊問題
    作者:lych 所在討論版:-- 網 路 硬 體 版
    回覆: 4
    最後發表: 2004-02-20, 03:58 PM
  2. Switch的堆疊...
    作者:yilang 所在討論版:-- 網 路 硬 體 版
    回覆: 3
    最後發表: 2003-05-12, 08:54 PM
  3. 關於SWITCH.....可堆疊是什麼意思
    作者:螺絲起子 所在討論版:-- 網 路 硬 體 版
    回覆: 5
    最後發表: 2001-09-15, 06:49 PM
  4. HUB 要用連接還是堆疊呢??
    作者:jcs 所在討論版:-- 網 路 硬 體 版
    回覆: 8
    最後發表: 2001-07-16, 11:17 AM
  5. SWITCH是否都不能堆疊
    作者:奧利 所在討論版:-- 網 路 硬 體 版
    回覆: 4
    最後發表: 2001-06-20, 08:36 AM

 

此網頁沒有從搜尋引擎而來的訪客

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •