您的位置:程序门 -> c/c++ -> c++ 语言



请各位大虾帮我看看这个程序如何用c++编写?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请各位大虾帮我看看这个程序如何用c++编写?
发表于:2007-10-24 07:25:54 楼主
一、 线性顺序表1:
函数调用方式实现建立线性表及线性表的各项功能
struct   list
{
et   alist[maxsize];
int   size;
};//一旦定义一个struct   list这样的数据结构名称与类型,那么在你的程序里,struct   list就象int   一样的意义了
typedef   char   et;//定义一个宏,用et代表数据类型char   ,这样若要改变数据类型,只需改动这一个地方就可以了。
实现七个函数:  
1)置空表:void   setnull(struct   list   *p)
2)   求长度:int   length(struct   list   *p)
3)取表中第i个结点:et   get   (struct   list   *p,int   i)
4)按值查找:int   locate(struct   list   *p,et   x)
5)插入结点:void   insert(struct   list   *p,int   i,et   x)
6)删除结点:void   delete(struct   list   *p,int   i)
7)显示链表:void   display(struct   list   *p)
这样可以直接调用这七个函数来实现顺序表的操作,如实现在屏幕上显示如下内容:(就是说,每个动作都应该在屏幕上有提示)
我的顺序表为:d->   e-> a-> c-> a-> b
值为a在表中的位置为:3
位置4的值为:c
删除第二个结点后顺序表:d->   a-> c-> a-> b
删除第二个结点后顺序表:d->   c-> a-> b
删除第1个结点后顺序表:   c-> a-> b
删除第1个结点后顺序表:   a-> b
发表于:2007-10-24 08:56:071楼 得分:0
看看数据结构就ok了
发表于:2007-10-24 09:32:302楼 得分:0
这个帖子既然发在c++社区里,就不应该用c语言式的c++来写。
首先应该用模板,比typedef好。
再从面向对象方面来看,链表是一个对象,链表里的每个节点是一个对象,节点里储存的数据也可以看做一个对像。再用组合的思想,把这些对象组合成一个完整的面对象的链表。
个人感觉ivar   jacobson(uml的鼻祖之一)写的《c++入门经典》里关于链表的那一部分还是写得不错的,充分体现了面向对象的思想。
发表于:2007-10-24 09:46:433楼 得分:0
又见课程设计阿!这样的问题先把自己的实现写出来,然后再问哪里能够修改,这样对你对论坛里的其他人都有好处!
发表于:2007-10-24 12:05:454楼 得分:0
  帮我看一下我编写的代码   帮我改一下   我不太清楚错误
#include   "iostream.h"
#define   maxsize   100
typedef   char   et;

struct   list
  {et   alist[maxsize];
    int   size;
  }

void   setnull(struct   list   *p)  
  {p-> size=0;}
 
int   length(struct   list   *p)
  {int   k=0;  
  for(;p-> alist[p-> size];p-> size++)
  {k++;}
  return   k+1;
  }
 
et   get(struct   list   *p,   int   i)
  {
          return   p-> alist[i];
  }

int   locate(struct   list   *p,et   x)
{   int   k;
  for(k=0;p-> size!=x;p++,k++)
  {}
  return   k;   }
 
int   insert(struct   list   *p,int   i,et   x)
{int   j;  
  if(i <1 ¦ ¦i> maxsize+1)   return   false;
    i--;
  for(j=(p-> size);j> i;j--)
  {p-> alist[j]=p-> alist[j-1];
    }
    p-> alist[i]=x;
  p-> alist++;  
  return   true;}  

et   delete(struct   list   *p,int   i)
{for(   ;i <maxsize;i++)
      p-> alist[i]=p-> alist[i+1];
}

void   display(struct   list   *p)
{if(p-> alist)   cout < <p-> alist;
else   breake;
  for(;p-> alist[p-> size];p-> size++)    
  cout < <"-> " < <p-> alist[p-> size];
}

void   main()
{struct   list   *p;
int   i;
et   mm[maxsize];
for(i=0;i <maxsize;i++)
{cint> > mm[i];  
if(a[i])   i++;
else   break;}
cout < <"我的顺序表为:" < <display(p) < <endl;
cout < <"值为a在表中的位置为:" < <locate(p,a) < <endl;
cout < <"位置为4的值为:" < <get(p,4) < <endl;
delete(p,2);
cout < <"删除第二个结点后顺序表:" < <display(p) < <endl;
delete(p,2);
cout < <"删除第二个结点后顺序表:" < <display(p) < <endl;
delete(p,1);
cout < <"删除第一个结点后顺序表:   " < <display(p) < <endl;
delete(p,1);
cout < <"删除第一个结点后顺序表:" < <display(p) < <endl;
}  
发表于:2007-10-24 12:08:245楼 得分:0
  帮我看一下我编写的代码   帮我改一下   我不太清楚错误
#include   "iostream.h"
#define   maxsize   100
typedef   char   et;

struct   list
  {et   alist[maxsize];
    int   size;
  }

void   setnull(struct   list   *p)  
  {p-> size=0;}
 
int   length(struct   list   *p)
  {int   k=0;  
  for(;p-> alist[p-> size];p-> size++)
  {k++;}
  return   k+1;
  }
 
et   get(struct   list   *p,   int   i)
  {
          return   p-> alist[i];
  }

int   locate(struct   list   *p,et   x)
{   int   k;
  for(k=0;p-> size!=x;p++,k++)
  {}
  return   k;   }
 
int   insert(struct   list   *p,int   i,et   x)
{int   j;  
  if(i <1 ¦ ¦i> maxsize+1)   return   false;
    i--;
  for(j=(p-> size);j> i;j--)
  {p-> alist[j]=p-> alist[j-1];
    }
    p-> alist[i]=x;
  p-> alist++;  
  return   true;}  

et   delete(struct   list   *p,int   i)
{for(   ;i <maxsize;i++)
      p-> alist[i]=p-> alist[i+1];
}

void   display(struct   list   *p)
{if(p-> alist)   cout < <p-> alist;
else   breake;
  for(;p-> alist[p-> size];p-> size++)    
  cout < <"-> " < <p-> alist[p-> size];
}

void   main()
{struct   list   *p;
int   i;
et   mm[maxsize];
for(i=0;i <maxsize;i++)
{cint> > mm[i];  
if(a[i])   i++;
else   break;}
cout < <"我的顺序表为:" < <display(p) < <endl;
cout < <"值为a在表中的位置为:" < <locate(p,a) < <endl;
cout < <"位置为4的值为:" < <get(p,4) < <endl;
delete(p,2);
cout < <"删除第二个结点后顺序表:" < <display(p) < <endl;
delete(p,2);
cout < <"删除第二个结点后顺序表:" < <display(p) < <endl;
delete(p,1);
cout < <"删除第一个结点后顺序表:   " < <display(p) < <endl;
delete(p,1);
cout < <"删除第一个结点后顺序表:" < <display(p) < <endl;
}  


快速检索

最新资讯
热门点击