用C语言编程

设计内容和要求:1.用含有各种字符的串,建立循环单链表,每个结点含有一个字符。2.求出链表的长度。3.删除单链表中指定位置的元素。4.删除单链表中指定值的元素。... 设计内容和要求:
1.用含有各种字符的串,建立循环单链表,每个结点含有一个字符。
2.求出链表的长度。
3.删除单链表中指定位置的元素。
4.删除单链表中指定值的元素。
展开
 我来答
xoaxa
2018-01-03 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3398万
展开全部

#include <stdio.h>
#include <stdlib.h>

typedef char datatype;

typedef struct node {
datatype data;
struct node *next;
}*List,NODE,*pNode;

List GetEmptyList() {
pNode head = (pNode)malloc(sizeof(NODE));
if(head == NULL) {
printf("内存耗尽!\n");
exit(1);
}
head->next = NULL;
return head;
}

void CreatList(List head,char s[]) {
pNode p,q;
int i = 0;
if(head == NULL) {
printf("表头为空,无法创建链表。|你");
return;
}
p = head;
while(s[i]) {
q = (pNode)malloc(sizeof(NODE));
if(q == NULL) {
printf("内存耗尽!\n");
exit(1);
}
q->data = s[i];
q->next = NULL;
while(p->next) p = p->next;
q->next = p->next;
p->next = q;
++i;
}
if(q) q->next = head;// 做成循环表的必要步骤
}

int ListLength(List head) {// 返回单向循环表长
int len = 0;
pNode p = head->next;
while(p != head) {
++len;
p = p->next;
}
return len;
}

int RemovePosNode(List head,int pos) { // 删除指定位置的结点
int i,len = ListLength(head);
pNode p = head,q;
if(pos < 1 || pos > len) {
printf("数据错误。\n");
return 0;
}
for(i = 1;i < pos && i < len;++i,p = p->next);
if(i == pos) {
q = p->next;
p->next = q->next;
free(q);
return 1;
}
printf("没有找到位置第%d的结点。\n",pos);
return 0;
}

int RemoveDataNode(List head,datatype data) { // 删除有指定数据的第一个结点
pNode p = head,q;
while(p->next != head) {
if(p->next->data == data) {
q = p->next;
p->next = q->next;
free(q);
return 1;
}
p = p->next;
}
if(p->next == head) printf("没有找到数据是\'%c\'的结点。\n",data);
return 0;
}

void show(List head) {
pNode p = head->next;
while(p != head) {
printf("%c",p->data);
p = p->next;
}
printf("\n");
}

int main() {
char s[] = "C Trapse and Pittfalls";
List head = GetEmptyList();
CreatList(head,s);
show(head);// 显示原串
RemovePosNode(head,8);//删除字符'e'
show(head);
RemoveDataNode(head,'t');
show(head);
return 0;
}
q1...0@33sn.cc
2018-01-03 · 超过34用户采纳过TA的回答
知道答主
回答量:397
采纳率:45%
帮助的人:45.2万
展开全部
c程序代码内容如下:
# include
main()
{
int a,b,c;
printf("请输入两个整数,中间以空格隔开:\n");
scanf("%d%d",&a,&b);
c=a+b;
printf("这两个数的和是:a+b=%d\n",c);
}
然后按提示输入“1 1”就会显示:“a+b=2”
编程完成!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
n3...0@33sn.cc
2018-01-03 · 超过23用户采纳过TA的回答
知道答主
回答量:243
采纳率:53%
帮助的人:39.2万
展开全部
简单计算器实现:
#include
int main() {
double num1 = 0; //输入1
double num2 = 0; //输入2
char ch; //操作
double ret = 0; //结果 printf( "输入第一个数:" );
scanf( "%lf", &num1 );
printf( "输入第二个数:" );
scanf( "%lf", &num2 );
printf( "操作[+ - * /]:" );
getchar();
scanf( "%c", &ch ); switch( ch ) {
case '+':
ret = num1 + num2;
break;
case '-':
ret = num1 - num2;
break;
case '*':
ret = num1 * num2;
break;
case '/':
ret = num1 / num2;
break;
default:
break;
}
printf( "结果:%.2lf\n", ret ); return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
叫字真9
2018-01-03 · 超过23用户采纳过TA的回答
知道答主
回答量:86
采纳率:68%
帮助的人:28.1万
展开全部
老师要我们说说大约的步骤 是怎么做的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式