精品日本亚洲一区二区三区,99久久精品免费观看国产,99久久免费精品,亚洲精品国产一区二区成人,日本亚洲精品一区二区三区四区,国产亚洲精品成人久久网站,久久亚洲男人第一AV网站,精品国产高清一区二区广区,久久精品五月天很黄很艳女TV

考研論壇

 
查看: 1513|回復: 3
打印 上一主題 下一主題

【討論】數據結構編程問題(串的堆分配存儲方式)

[復制鏈接]

32

主題

269

帖子

877

積分

中級戰友

Rank: 3Rank: 3

精華
0
威望
110
K幣
767 元
注冊時間
2011-3-8
跳轉到指定樓層
樓主
發表于 2011-10-16 20:41 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 xingzhe826 于 2011-10-16 20:55 編輯

編譯沒錯,但就是不能運行,不知道怎么回事、、、誰幫幫我。感激
#include "stdio.h"
#include "stdlib.h"
#define TRUE     1
#define FALSE    0
#define OK       1
#define ERROR    -1
#define OVERFLOW -2
typedef int Status;

//串的堆分配存儲表示
typedef struct{
char *ch;     //串址
int length;   //串長
}HString;
//串操作聲明
Status InitString_H(HString&);
Status StrAssign_H(HString&,char*);
Status StrCopy_H(HString&,HString);
void StrPrint_H(HString);

Status InitString_H(HString &S)
{
if(S.ch) free(S.ch);
if(!(S.ch=(char*)malloc(sizeof(char))))
  exit(OVERFLOW);     //分配空間失敗
S.ch=NULL;
S.length=0;
return OK;
}
Status StrAssign_H(HString &T,char *chars)
{//串賦值
int i,j;
char *c;
if(T.ch) free(T.ch);        //釋放非空字符串
for(i=0,c=chars;*c;++i,++c); //串長
if(!i){
  T.ch=NULL;
  T.length=0;
}
else{
  if(!(T.ch=(char*)malloc(i*sizeof(char))))
   exit(OVERFLOW);     //分配空間失敗
  for(j=0;j<i;j++)
   T.ch[j]=chars[j];
  T.length=i;
}
return OK;
}
Status StrCopy_H(HString &T,HString S)
{//復制字符串
int i;

if(T.ch) free(T.ch);
T.ch=(char*)malloc(S.length*sizeof(char));
if(!T.ch) exit(OVERFLOW);
for(i=0;i<S.length;i++)
  T.ch=S.ch;
T.length=S.length;
return OK;
}

void StrPrint_H(HString S)
{//屏幕顯示
int i;
for(i=0;i<S.length;i++)
  printf("%c",S.ch);
printf("\n");
}

void main()
{
HString S,T;
char *c;

c="孫大圣";
StrAssign_H(S,c);
StrPrint_H(S);

StrCopy_H(T,S);
StrPrint_H(T);
}

1.jpg (28.52 KB, 下載次數: 8)

1.jpg

    評分

    參與人數 1威望 +10 收起 理由
    yylsky + 10

    查看全部評分

    回復

    使用道具 舉報

    13

    主題

    252

    帖子

    0

    積分

    新手上路

    Rank: 1

    精華
    0
    威望
    90
    K幣
    805 元
    注冊時間
    2010-11-28
    沙發
    發表于 2011-10-17 10:28 來自手機 | 只看該作者
    你發到csdn上看看。。
    回復

    使用道具 舉報

    1

    主題

    49

    帖子

    0

    積分

    新手上路

    Rank: 1

    精華
    0
    威望
    300
    K幣
    347 元
    注冊時間
    2010-9-10
    板凳
    發表于 2011-10-17 15:53 | 只看該作者
    這。。。。,請把所有的"if(T.ch) free(T.ch);"刪了。表亂用,明白?  還有   屏幕顯示那個函數錯了,
    void StrPrint_H(HString S)
    {//屏幕顯示
    int i;
    for(i=0;i<S.length;i++)
      printf("%c",S.ch【i】);
    printf("\n");
    }

    評分

    參與人數 1威望 +60 收起 理由
    yylsky + 60

    查看全部評分

    回復

    使用道具 舉報

    32

    主題

    269

    帖子

    877

    積分

    中級戰友

    Rank: 3Rank: 3

    精華
    0
    威望
    110
    K幣
    767 元
    注冊時間
    2011-3-8
    地板
     樓主| 發表于 2011-10-17 16:46 | 只看該作者
    lauryprincess 發表于 2011-10-17 15:53
    這。。。。,請把所有的"if(T.ch) free(T.ch);"刪了。表亂用,明白?  還有   屏幕顯示那個函數錯了,
    void ...

    哦   
    回復

    使用道具 舉報

    您需要登錄后才可以回帖 登錄 | 注冊 人人連接登陸

    本版積分規則   

    關閉

    您還剩5次免費下載資料的機會哦~

    掃描二維碼下載資料

    使用手機端考研幫,進入掃一掃
    在“我”中打開掃一掃,
    掃描二維碼下載資料

    關于我們|商務合作|小黑屋|手機版|聯系我們|服務條款|隱私保護|幫學堂| 網站地圖|院校地圖|漏洞提交|考研幫

    GMT+8, 2026-5-3 16:07 , Processed in 0.076357 second(s), Total 12, Slave 11(Usage:6.75M, Links:[2]1,1_1) queries , Redis On.

    Powered by Discuz!

    © 2001-2017 考研 Inc.

    快速回復 返回頂部 返回列表
    × 關閉