求助C++改成C

lhck911028 2012-05-08 10:29:10
#include <iostream>
using namespace std;

typedef struct node
{
char data;
struct node *next;
}link;

link * get(link *l, int i)
{
link *p;int j=0;
p=l;
while((j<i) && (p->next!=NULL))
{p=p->next;j++;}
if(j==i)
return p;
else
return NULL;
}

link * ins (link *l, char ch,int i)
{ link *p,*s;
p=get(l,i-1);
if(p==NULL)
cout<<"输入有误"<<endl;
else
{
s=(link *)malloc(sizeof(link));
s->data=ch;
s->next=p->next;
p->next=s;
}
return l;
}

link * find(link *l, char ch)
{
link *p; int i=0; int j=0;
p=l;

while(p!=NULL)
{ i++;
if(p->data!=ch)
p=p->next;
else {cout<<"您查找的数据在第"<<i-1<<"个位置."<<endl;
j=1;p=p->next;
}

}
if(j!=1)
cout<<"您查找的数据不在线性表中."<<endl;
return l;
}


link * del(link *l, int i)
{
link *p,*s;
p=get(l,i-1);
if(p==NULL)
cout<<"输入有误"<<endl;
else
{
s=p->next;
p->next=s->next;
free(s);
}
return l;
}

link * add(link *l )
{
link *p,*s;
cout<<"请输入一串单字符数据,以*结束!"<<endl;
char ch;
link *HEAD;
link *R,*P,*L;
HEAD=(link *)malloc(sizeof(link));
HEAD->next=NULL;
R=HEAD;
getchar();
ch=getchar();
while(ch!='*')
{
P=(link *)malloc(sizeof(link));
P->data=ch;P->next=NULL;
R->next=P;R=R->next;
getchar();
ch=getchar();

}

L=HEAD;
cout<<"当前输入的线性表为:"<<endl;
P=L;P=P->next;
if(L!=NULL)
do
{cout<<P->data<<" ";
P=P->next;
}while(P!=NULL);
cout<<endl;
p=l;
while(p->next!=NULL)
p=p->next;
s=L;
p->next=s->next;
p=l;
return l;
}


link * print(link *l)
{ int i,k;
char ch;
link *p,*q;
cout<<"当前线性表为:"<<endl;
p=l;p=p->next;
if(l!=NULL)
do
{cout<<p->data<<" ";
p=p->next;
}while(p!=NULL);
cout<<endl;
cout<<"请选择您要的操作:";
cout<<" 1、插入";
cout<<" 2、查找";
cout<<" 3、删除";
cout<<" 4、合并";
cout<<" 0、退出";
cout<<endl;
cin>>k;
if(k==1)
{
cout<<"请输入您要插入的数据值:";
cin>>ch;
cout<<"请输入您要插入的位置:";
cin>>i;
p=ins(l,ch,i);
q=print(l);
}
else if(k==2)
{
cout<<"请输入您要查找的数据值:";
cin>>ch;
p=find(l,ch);
q=print(l);
}
else if(k==3)
{
cout<<"请输入您要删除的数据的位置:";
cin>>i;
p=del(l,i);
q=print(l);
}
else if(k==4)
{ p=add(l);
q=print(l);
}
else if(k==0)
;
else
{cout<<"输入错误!"<<endl;
q=print(l);}
return l;
}


int main()
{
cout<<"请输入一串单字符数据,以*结束!"<<endl;
char ch;
//link *head;
link *r,*p,*q,*l;
l=(link *)malloc(sizeof(link));
l->next=NULL;
r=l;
ch=getchar();
// getchar();
while(ch!='*')
{
p=(link *)malloc(sizeof(link));
p->data=ch;p->next=NULL;
r->next=p;r=r->next;
ch=getchar();
// getchar();
}
//l=head;
q=print(l);
return 0;

}
...全文
231 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxq301872 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

佩服那个真的全改那个人。
[/Quote]

其实我觉得那样挺好的,改代码权当是一次编程了,多好呀,除非你是大牛,不屑做这种体力活
清竹小雨 2012-05-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

C/C++ code
#include <stdio.h>
#include<malloc.h>
typedef struct node
{
char data;
struct node *next;
}link;

link * get(link *l, int i)
{
link *p;int j=0;
p=l;
while((j<i) && (p->next!=……
[/Quote]
强大
wzw_0827 2012-05-09
  • 打赏
  • 举报
回复
#include <stdio.h>
#include<malloc.h>
typedef struct node
{
char data;
struct node *next;
}link;

link * get(link *l, int i)
{
link *p;int j=0;
p=l;
while((j<i) && (p->next!=NULL))
{p=p->next;j++;}
if(j==i)
return p;
else
return NULL;
}

link * ins (link *l, char ch,int i)
{ link *p,*s;
p=get(l,i-1);
if(p==NULL) printf("输入有误\n");
else
{
s=(link *)malloc(sizeof(link));
s->data=ch;
s->next=p->next;
p->next=s;
}
return l;
}

link * find(link *l, char ch)
{
link *p; int i=0; int j=0;
p=l;

while(p!=NULL)
{ i++;
if(p->data!=ch)
p=p->next;
else {printf("您查找的数据在第%d个位置.\n",i-1);
j=1;p=p->next;
}

}
if(j!=1) printf("您查找的数据不在线性表中.\n");
return l;
}


link * del(link *l, int i)
{
link *p,*s;
p=get(l,i-1);
if(p==NULL)
printf("输入有误\n");
else
{
s=p->next;
p->next=s->next;
free(s);
}
return l;
}

link * add(link *l )
{
link *p,*s;
char ch;

link *HEAD;
link *R,*P,*L;
printf("请输入一串单字符数据,以*结束!\n");
HEAD=(link *)malloc(sizeof(link));
HEAD->next=NULL;
R=HEAD;
getchar();
ch=getchar();
while(ch!='*')
{
P=(link *)malloc(sizeof(link));
P->data=ch;P->next=NULL;
R->next=P;R=R->next;
getchar();
ch=getchar();

}

L=HEAD;
printf("当前输入的线性表为:\n");
P=L;P=P->next;
if(L!=NULL)
do
{printf("%c ",P->data);////////////////////////////////////
P=P->next;
}while(P!=NULL);
printf("\n");
p=l;
while(p->next!=NULL)
p=p->next;
s=L;
p->next=s->next;
p=l;
return l;
}


link * print(link *l)
{ int i,k;
char ch;
link *p,*q;
printf("当前线性表为:\n");
p=l;p=p->next;
if(l!=NULL)
do
{printf("%c ",p->data);
p=p->next;
}while(p!=NULL);
printf("\n");
printf("请选择您要的操作:");
printf(" 1、插入");
printf(" 2、查找");
printf(" 3、删除");
printf(" 4、合并");
printf(" 0、退出");
printf("\n");
scanf("%d",&k);
if(k==1)
{
printf("请输入您要插入的数据值:");
scanf("%c",&ch);
printf("请输入您要插入的位置:");
scanf("%d",&i);
p=ins(l,ch,i);
q=print(l);
}
else if(k==2)
{
printf("请输入您要查找的数据值:");
scanf("%c",&ch);
p=find(l,ch);
q=print(l);
}
else if(k==3)
{
printf("请输入您要删除的数据的位置:");
scanf("%d",&i);
p=del(l,i);
q=print(l);
}
else if(k==4)
{ p=add(l);
q=print(l);
}
else if(k==0)
;
else
{printf("输入错误!\n");
q=print(l);}
return l;
}


int main()
{
char ch;
link *r,*p,*q,*l;
printf("请输入一串单字符数据,以*结束!\n");

//link *head;

l=(link *)malloc(sizeof(link));
l->next=NULL;
r=l;
ch=getchar();
// getchar();
while(ch!='*')
{
p=(link *)malloc(sizeof(link));
p->data=ch;p->next=NULL;
r->next=p;r=r->next;
ch=getchar();
// getchar();
}
//l=head;
q=print(l);
return 0;

}

源程序有问题没不知道 反正是语法上把cpp的改成c了
wzw_0827 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
佩服那个真的全改那个人。
[/Quote]只能说nba暂停太久了 闲着没事做 就知道你们不要这40分。。。lz出来结贴吧
lbq199204 2012-05-09
  • 打赏
  • 举报
回复
佩服那个真的全改那个人。
Corner 2012-05-09
  • 打赏
  • 举报
回复
#include <iostream>改成#include <iostream.h>
using语句去掉
cout改成printf比如
cout<<"您查找的数据在第"<<i-1<<"个位置."<<endl;
改成
printf("您查找的数据在第%d个位置\r\n", i - 1);
DataChat.Club 2012-05-09
  • 打赏
  • 举报
回复
你是不是不认识这个啊...


#include <iostream>

using namespace std;

还是不认识cout<<"您查找的数据在第"<<i-1<<"个位置."<<endl啊....
wzw_0827 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
还真有人肯改。
[/Quote]反正有分拿 大不了就几个ctrl+g
哈哈
Fangzhen 2012-05-09
  • 打赏
  • 举报
回复
这个基本上就是C代码,其中没有使用类,也没有使用stl,很快就能改。只是把输入输出和头文件换成C 的就行,还要注意在C中变量必须在代码块头进行定义。
wanghaoha 2012-05-09
  • 打赏
  • 举报
回复
7楼正解
FrankHB1989 2012-05-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

#include <iostream>改成#include <iostream.h>
using语句去掉
cout改成printf比如
cout<<"您查找的数据在第"<<i-1<<"个位置."<<endl;
改成
printf("您查找的数据在第%d个位置\r\n", i - 1);
[/Quote]
<iostream.h>?
少想当然。
给我用<stdio.h>。
猪头小哥 2012-05-09
  • 打赏
  • 举报
回复
还真有人肯改。
自信男孩 2012-05-08
  • 打赏
  • 举报
回复
C语言可以笼统的说是C++的一个子集,C语言的函数调用可以通过G++编译器编译通过,并能够调用C语言的函数库。改成C语言没有这个必要吧。
自信男孩 2012-05-08
  • 打赏
  • 举报
回复
如果单纯的想把C++的函数调用或者叫类调用换成C语言的函数调用。这个不难,在你的程序里没有定义一个类,所以你只需包含C的头文件,然后调用C的函数库,比如输入输出。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧