| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 833 人关注过本帖
标题:C語言 循環單鏈錶的基本功能(幫忙改錯~~)
只看楼主 加入收藏
ssdfsdfsdf
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-9-29
收藏
 问题点数:0 回复次数:3 
C語言 循環單鏈錶的基本功能(幫忙改錯~~)
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct LNode
{
   ElemType data;
   int next;   
}StaticList[MaxSize];

void CreatList(StaticList L,ElemType a[],int n)
{
      int i;
      L[0].next=1;
      for(i=1;i<=n;i++)
      {
        strcpy(L[i].data,a[i-1]);
        L[i].next=i+1;
      }
      L[n].next=0;
}

void InitList(StaticList L)
{
    int j;
    L[0].next=0;
    for(j=1;j<MaxSize;j++)
        L[j].next=-1;
}

int ListInsert(StaticList L,int i,ElemType e)
{
    int j=L[0].next,j1,j2,k;
    if (i==1)
    {   if(j==0)
        { strcpy(L[1].data,e);
          L[0].next=1;
          L[1].next=0;
          return 1;
        }
    else
    {   k=j+1;
        while(k!=j)
         if(L[k].next==-1)
          break;
         else
          k=(k+1)%MaxSize;
         if(k!=j)
         { strcpy(L[k].data,e);
           L[k].next=L[0].next;
           L[0].next=k;
           return 1;
         }
         else return 0;
    }

}
else
{
  k=0;
  while (k<i-2&&j!=0)
  {
    k++;
    j=L[j].next;
  }
  if(j==0)
    return 0;
  else
  { j1=j;
    j2=L[j].next;
    k=j+1;
    while(k!=j)
     if(L[k].next==-1)
       break;
     else
       k=(k+1)%MaxSize;
     if(k!=j)
     {
        strcpy(L[k].data,e);
        L[j1].next=k;
        L[k].next=j2;
        return 1;
     }
     else return 0;
  }
}
}

void DispList(StaticList L)
{
    int j=0;
    while (L[j].next!=0)
    {  j=L[j].next;
       printf("%d:%s,%d\n",j,L[j].data,L[j].next);
    }
    printf("\n");
}

int ListLength(StaticList L)
{
    int i=0,j=0;
    while(L[j].next!=0)
    {    i++;
         j=L[j].next;
    }
    return(i);
}

int ListEmpty(StaticList L)
{
    return(L[0].next==0);
}

int GetElem(StaticList *L,int i,ElemType &e)
{
    int k=0,j=L[0].next;
    while(k<i-1&&j!=0)
    {
        k++;
        j=L[j].next;
    }
    if (j==0)
      return 0;
    else
    {  strcpy(e,L[j].data);
       return 1;
    }
}

int LocateElem(StaticList L,ElemType e)
{
    int j=L[0].next;
    int i=1;
    while(j!=0&&strcmp(L[j].data,e)!=0)
    {   j=L[j].next;
        i++;
    }
    if(j==0)
     return(0);
    else
     return(i);
}

int ListDelete(StaticList L,int i,ElemType &e)
{
    int j=L[0].next,j1,k;
    if(L[0].next==0)
    return(0);
    if (i==1)
    { j1=L[0].next;
      L[0].next=L[j1].next;
      strcpy(e,L[j1].data)
      L[j1].next=-1;
      return(1);
    }
   else
   { k=0;
     while(k<i-2&&j!=0)
     {   k++;
         j=L[j].next;
     }
     if(j==0)
       return 0;
     else
     {    if(L[j].next==0)
            return(0);
          j1=L[j].next;
          L[j].next=L[j1].next;
          strcpy(e,L[j1].data);
          L[j1].next=-1;
          return 1;
     }
   }
}

void DestroyList(SqList *&L)
{
  free(L);
}

           int main()
{
    LinkList *h;
    ElemType e;
    printf("(1)初始化单链表h\n");
    InitList(h);
    printf("(2)依次采用尾插法插入a,b,c,d,e元素\n");
    ListInsert(h,1,'a');
    ListInsert(h,2,'b');
    ListInsert(h,3,'c');
    ListInsert(h,4,'d');
    ListInsert(h,5,'e');
    printf("(3)输出单链表h:");
    DispList(h);
    printf("(4)单链表h长度=%d\n",ListLength(h));
    printf("(5)单链表h为%s\n",(ListEmpty(h)?"空":"非空"));
    GetElem(h,3,e);
    printf("(6)单链表h的第3个元素=%c\n",e);
    printf("(7)元素a的位置=%d\n",LocateElem(h,'a'));
    printf("(8)在第4个元素位置上插入f元素\n");
    ListInsert(h,4,'f');
    printf("(9)输出单链表h:");
    DispList(h);
    printf("(10)删除h的第3个元素\n");
        ListDelete(h,3,e);
    printf("(11)输出单链表h:");
    DispList(h);
    printf("(12)释放单链表h\n");
    DestroyList(h);
   
}

TC-win 提示GetElem那個方法頭語法錯誤 請高手幫幫忙
搜索更多相关主题的帖子: include 
2008-09-29 13:53
duanchangren2
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2008-10-3
收藏
得分:0 

事在人为```
2008-10-04 09:51
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
[bo][un]duanchangren2[/un] 在 2008-10-4 09:51 的发言:[/bo]



LS大清早起来就激情四射的...

2008-10-04 11:10
blueboy82006
Rank: 5Rank: 5
来 自:幻想世界
等 级:贵宾
威 望:16
帖 子:1227
专家分:57
注 册:2007-7-23
收藏
得分:0 
LZ这句语法错误:
 strcpy(L[i].data,a[i-1]);
其实,你直接
 L[i].data=a[i-1];
就行了,何必那么麻烦...
cannot convert parameter 1 from 'char' to 'char *'

2008-10-04 11:18
快速回复:C語言 循環單鏈錶的基本功能(幫忙改錯~~)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027993 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved