用C语言编程
设计内容和要求:1.用含有各种字符的串,建立循环单链表,每个结点含有一个字符。2.求出链表的长度。3.删除单链表中指定位置的元素。4.删除单链表中指定值的元素。...
设计内容和要求:
1.用含有各种字符的串,建立循环单链表,每个结点含有一个字符。
2.求出链表的长度。
3.删除单链表中指定位置的元素。
4.删除单链表中指定值的元素。 展开
1.用含有各种字符的串,建立循环单链表,每个结点含有一个字符。
2.求出链表的长度。
3.删除单链表中指定位置的元素。
4.删除单链表中指定值的元素。 展开
4个回答
展开全部
#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;
}
展开全部
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”
编程完成!
# 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”
编程完成!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单计算器实现:
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
老师要我们说说大约的步骤 是怎么做的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询