一个c语言的程序题?

作者&投稿:竹底 (若有异议请与网页底部的电邮联系)
~
  1. 首先,定义一个单链表的结构体,用来存储整数值和指向下一个结构体的指针

  2. 然后,在main()函数中定义一个头节点指针,并用它来存储整个链表

    • 请点击输入图片描述

  3. 接下来,实现从键盘输入五个整数并将它们尾插入链表中

    • 请点击输入图片描述

  4. 最后,实现链表中的插入和删除操作,并输出链表中的所有元素

下面是一个可行的c语言程序,该程序实现了从键盘输入五个整数并存储在链表中,然后插入和删除一个元素,最后输出链表中的元素。



下面是一个示例代码,它实现了从键盘中输入五个整数,并使用尾插法建立单链表来存储这五个数,然后输出链表中的所有元素的功能:
Option Explicit
Dim head As Node
Private Type Node
data As Integer
nextNode As Node
End Type
Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 5
InputNumber
Next
PrintList
End Sub
Private Sub InputNumber()
Dim newNode As Node
Set newNode = New Node
newNode.data = InputBox("请输入整数:")
If head Is Nothing Then
Set head = newNode
Else
Dim p As Node
Set p = head
Do While p.nextNode Is Not Nothing
Set p = p.nextNode
Loop
Set p.nextNode = newNode
End If
End Sub
Private Sub PrintList()
Dim p As Node
Set p = head
Do While p Is Not Nothing
Debug.Print p.data
Set p = p.nextNode
Loop
End Sub
在上述代码的基础上,您可以添加两个新函数来实现在链表中插入一个元素以及删除一个元素的功能:
Private Sub InsertNumber(data As Integer, pos As Integer)
Dim newNode As Node
Set newNode = New Node
newNode.data = data
If pos = 1 Then
newNode.nextNode = head
Set head = newNode
Else
Dim p As Node
Set p = head
Dim i As Integer
For i = 1 To pos - 2
Set p = p.nextNode
Next
newNode.nextNode = p.nextNode
Set p.nextNode = newNode
End If
End Sub
Private Sub DeleteNumber(pos As Integer)
If pos = 1 Then
Set head = head.nextNode
Else
Dim p As Node
Set p = head
Dim i As Integer
For i = 1 To pos - 2
Set p = p.nextNode
Next
Set p.nextNode = p.nextNode.nextNode
End If
End Sub
您可以在调用这些函数时使用以下代码来插入和删除元素:
InsertNumber 100, 3
DeleteNumber 2

这是第一问的代码:

#include <stdio.h>

#include <stdlib.h>

struct node {

int data;

struct node* next;

};

int main() {

int i;

struct node *head, *p, *q;

head = NULL; // 初始化头指针

for (i = 0; i < 5; i++) {

// 分配内存

q = (struct node*)malloc(sizeof(struct node));

scanf("%d", &q->data); // 从键盘输入数据

q->next = NULL; // 设置链表尾

if (head == NULL) {

head = q; // 如果是第一个节点,则将头指针指向该节点

} else {

p->next = q; // 尾插入法,将新节点插入到链表尾

}

p = q; // 将新节点作为下一个节点的前驱

}

p = head; // 设置遍历指针

while (p != NULL) {

printf("%d ", p->data); // 输出节点的数据

p = p->next; // 指向下一个节点

}

return 0;

}

这是第二问的代码:

#include<stdio.h>

#include<stdlib.h>

struct node

{

int data;

struct node *next;

};

int main()

{

struct node *head, *p, *q;

int i;

head = NULL;

for(i=0; i<5; i++)

{

p = (struct node *)malloc(sizeof(struct node));

printf("输入第%d个数:", i+1);

scanf("%d", &p->data);

p->next = NULL;

if(head == NULL)

head = p;

else

q->next = p;

q = p;

}

p = head;

printf("链表中的元素是:
");

while(p != NULL)

{

printf("%d ", p->data);

p = p->next;

}

printf("
");

// 在链表中插入一个元素

p = (struct node *)malloc(sizeof(struct node));

p->data = 99;

p->next = head;

head = p;

// 删除一个元素

p = head;

head = head->next;

free(p);

p = head;

printf("





1.编写程序,实现从键盘中输入五个整数,并将五个数输出(注明:必须用尾插入法建立单链表来存储该五个数)。
//定义链表结构
struct Node
{
int data;
Node *next;
};
//定义头结点
Node *head;
//定义尾插入函数
void insertTail(int data)
{
Node *node = new Node;
node->data = data;
node->next = NULL;
if (head == NULL)
{
head = node;
}
else
{
Node *p = head;
while (p->next != NULL)
{
p = p->next;
}
p->next = node;
}
}
//定义输出函数
void printList()
{
Node *p = head;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main()
{
int data;
//从键盘输入五个整数
for (int i = 0; i < 5; i++)
{
cin >> data;
//尾插入法建立单链表
insertTail(data);
}
//输出链表中的所有元素
printList();
return 0;
}
2.编写程序,在第 1 题的基础上再分别在链表中插入一个元素以及删除一个元素,再输出链表中的所有元素
//定义插入函数
void insertNode(int data, int pos)
{
Node *node = new Node;
node->data = data;
node->next = NULL;
if (head == NULL)
{
head = node;
}
else
{
Node *p = head;
int i = 0;
while (p->next != NULL && i < pos - 1)
{
p = p->next;
i++;
}
node->next = p->next;
p->next = node;
}
}
//定义删除函数
void deleteNode(int pos)
{
if (head == NULL)
{
return;
}
else
{
Node *p = head;
int i = 0;
while (p->next != NULL && i < pos - 1)
{
p = p->next;
i++;
}
Node *q = p->next;
p->next = q->next;
delete q;
}
}
int main()
{
int data;
//从键盘输入五个整数
for (int i = 0; i < 5; i++)
{
cin >> data;
//尾插入法建立单链表
insertTail(data);
}
//在链表中插入一个元素
insertNode(100, 3);
//在链表中删除一个元素
deleteNode(3);
//输出链表中的所有元素
printList();
return 0;
}

# 定义链表节点类
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
# 尾插入法建立链表
def createLinkedList(nums):
head = ListNode() # 定义头节点
cur = head
for num in nums:
cur.next = ListNode(num)
cur = cur.next
return head.next
# 在链表末尾插入一个元素
def insertLinkedList(head, val):
cur = head
while cur.next:
cur = cur.next
cur.next = ListNode(val)
# 从链表中删除一个元素
def deleteLinkedList(head, val):
dummy = ListNode(0)
dummy.next = head
pre, cur = dummy, head
while cur:
if cur.val == val:
pre.next = cur.next
break
pre = cur
cur = cur.next
return dummy.next
# 输出链表中的所有元素
def printLinkedList(head):
cur = head
while cur:
print(cur.val, end=" ")
cur = cur.next
print()
# 主函数
if __name__ == '__main__':
# 输入五个整数并建立链表
nums = []
for i in range(5):
num = int(input("请输入第%d个整数:" % (i+1)))
nums.append(num)
head = createLinkedList(nums)
# 在链表中插入一个元素并输出链表中的所有元素
val = int(input("请输入要插入的整数:"))
insertLinkedList(head, val)
print("插入后链表中的所有元素:")
printLinkedList(head)
# 从链表中删除一个元素并输出链表中的所有元素
val = int(input("请输入要删除的整数:"))
head = deleteLinkedList(head, val)
print("删除后链表中的所有元素:")
printLinkedList(head)
这段代码实现了从键盘中输入五个整数,并用尾插入法建立单链表来存储这五个数。然后,用户可以输入一个整数,程序会在链表末尾插入这个整数,并输出链表中的所有元素。接着,用户可以输入要删除的整数,程序会从链表中删除这个整数,并再次输出链表中的所有元素。
有帮到你的话望采纳 谢谢~


C语言程序题:输入任意一个3位数,将其各位数字反序输出。
其实这题的思路可以这样,你可以把一个三位数看出三个数组成的,比如a,b,c然后输出 c,b,a就行了。代码如下:include <stdio.h> void main(){ int a,b,c,x;printf("请输入一个3位数\\n");scanf("%d",&x);a=x\/100;b=x\/10%10;c=x%10;printf("反输出的值为:%d%d%d\\n",c,b,a...

C语言:下面要求的C程序怎么编?
先定义一个字符型数组,把这一串字符串都进去,以后撤出他的串长,然后对这个字符串以字符为单位进行一次冒泡排序就可以了。具体的程序代码和运行情况见图片。程序代码文本:include<stdio.h> int main(){ int i,j,n;char s[100],t;scanf("%s",s);for(n=0; s[n]; n++);for(i=0; i<...

c语言程序填空题 1、如下程序的输出结果是 。 main( )
1、如下程序的输出结果是 c=3 。main( ){ int a=2,b=-1,c=3;if(a<b)if(b<0)c=0;else c++;printf(“c=%d”,c);} else 是与前面一个最近的if对应的,a=2,b=-1,a<b不成立,因此后面一个if--else---语句没有执行,c值没有改变。2、求 1! + 2!+3!+---+10...

C语言试题
1、一个C语言程序的语句至少应包含一个___main函数___。2、C语言源程序文件的扩展名是__ .C ___,经过编译、连接后,生成文件的扩展名是__ .h ___。3、结构化程序由顺序结构、___选择___和___循环___三种基本结构组成。4、C语言的执行是从___main函数__开始执行的。5、C源程序的...

c语言问题,求高手编写一个程序 编写程序: (1)求一个字符串S1的长度...
int findch(char *s, char c) { int i,pos = 1;for(i = 0; s[i]; ++i) { if(s[i] == c) return pos;pos++;} return -1;} int strcmp(char *s, char *t) { int i,value;for(i = 0; s[i] && t[i]; ++i) { value = s[i] - t[i];if(value != 0) ...

求写一个C语言程序 题目:分别编写求圆面积和圆周长的函数,另编写一主函...
include<stdio.h>#define Pi 3.14159double Square(double r){ return Pi * r * r;}double Perimeter(double r){ return 2 * Pi * r;}int main(){ double r; printf("请输入圆的半径:\\n"); while(scanf("%lf",&r)!= EOF){ printf("圆的面积是%lf\\n",Squar...

求C语言习题!
最好是写程序的题,越多越好。谢谢!c语言之家上不去了... 最好是写程序的题,越多越好。谢谢!c语言之家上不去了 展开  我来答 1个回答 #热议# 《请回答2021》瓜分百万奖金 tan3739 2008-06-22 · TA获得超过1072个赞 知道小有建树答主 回答量:173 采纳率:0% 帮助的人:114万 我也去...

帮我写几个c语言程序吧。。谢谢各位了哈
给你写几个吧:1.include<stdio.h> include<math.h> void main(){ float a,b,c,x1,x2;printf("Input a,b and c:");scanf("%f %f %f",&a,&b,&c);printf("%f\\n",sqrt(b*b-4*a*c));x1=(-b+sqrt(b*b-4*a*c))\/(2*a);x2=(-b-sqrt(b*b-4*a*c))\/(2*a);p...

c语言程序设计习题!!10道
1. 在C程序中,只能用于整型变量的运算符是___ 求余(%)___。2. 在C语言中,char类型变量占 2 个字节。3. 若a已定义为double类型,请写出从键盘给a输入数据的语句 scanf("%lf",&a); 。4. 为使以下程序能正确运行,请填空。include<stdio.h> include<math.h> main(){ doubl...

c语言程序设计例题
题目1 include "stdio.h"void main(void){ int n=5,m=10,i=1;long sum=1;for(;i<=n;i++){ sum*=i;} printf("\\n5!=%d",sum);for(i=1;i<=10;i++){ sum*=i;} printf("\\n10!=%d",sum);} 题目2 include "stdio.h"include "string.h"struct Student { char s_Name[...

禹会区13453224692: 一道C语言题,那位高手帮忙?编写一个C程序,循环接受用户的回答:Y或N.用户输入Y时,接受用户输入的小数;当用户输入N时,结束程序运行.(最... -
逮阮复方:[答案] #include void main() { char c; float f; while(true) { c=getchar(); if(c=='Y') { scanf("%f",&f); } else if(c=='N') { exit(0); } } }

禹会区13453224692: 哪位大爷帮我解决几个简单C语言程序题?感谢万分!用C语言编写一个程序用来求一元二次方程(ax2+bx+c=0)的解.编写一个函数求一元二次方程的解,... -
逮阮复方:[答案] #include void main() {float solut(float a,float b,float c); float a, b,c; printf("input a,b,c"); scanf("%f ,%f, %f",&a,&b,&c); printf("x=%10.2f\n",solut(a,b,c)); } float solut(float a,float b,float c) { float x=1.5,x0,f,f1; do { x0=x; f=(a*x0+b)*x0+c; f1=2*a*x0+b; x=x0...

禹会区13453224692: c语言题目~答对有分~答得完美奖分~一、C语言程序设计题【1】设有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…试编程,求出这个数列的前10项之和.【2... -
逮阮复方:[答案] 这是C语言的作业吧……好熟悉啊……这是我以前写的,翻出来~没写过的就不写了,太简单了都……1.None2.void main(){ int ge,shi,bai,number; for(number=100;number999) lenNum=4; else if(num>99) lenNum=3; else...

禹会区13453224692: 一道C语言程序题 -
逮阮复方: 1、执行到这一句void fun(char *t,char *s),t指针的值为SS的首地址,s指针指向aa的地址.2、while(*t!=0)t++;你执行行了一下循环,之后t指向“acc”的后一个地址.这时t==0,这个循环才结束.3、然后到第二个循环. while((*t++=*s++)!=0),这时s指向aa的第一个字符,即第一个b,t指向“acc”的后一个地址,所以这个赋值当然从“acc”的后面开始依次将“bbxxyy”赋到“acc”的后面.结果当然是accbbxxyy,bbxxyy.

禹会区13453224692: 一个C语言程序题目 -
逮阮复方: 用动态分配内存就行了,比如说 int student_num; int* student = (int*)malloc(student*sizeof(int)); 不过你应该不用这么做,你自己知道输什么数,你就直接定义那么大的数组就行了

禹会区13453224692: c语言的一个编程题
逮阮复方: #include <stdio.h> int main() { double i,j,sum = 0; for (i = 1, j = 2; i < 100; i++, j++) sum = sum + i / j; printf("%f\n",sum); }

禹会区13453224692: 一道C语言程序编写题目 -
逮阮复方: 直接用itoa函数,C标准库里的函数 头文件为#include itoa函数接受3个参数,第一个是整形数字,第二个是一个C风格字符串,第三个是进制.如:char a[100]; int b = 2132; itoa(b,a,10); a里的字符就是将b以10进制数按位存放

禹会区13453224692: 求一个C语言程序题~~ -
逮阮复方: 最开始母牛还没有繁殖能力,第4年才开始繁殖小牛.母牛的数目随年数的序列如下:1 1 1 2 3 4 6 9 13 19 28 41....同Fibonacci数列,可以猜出递数式A(n) = A(n-1) + A(n - 3),n > 3,A(1) = A(2) = A(3) = 1.代码如下:#include <stdio.h> int fibo(int n...

禹会区13453224692: 一道C语言的编程题目...... -
逮阮复方: #include int main(){ int n,i; scanf("%d", for(i=0;i<=99;i++) if((n*100+i)%5==0) printf("%d ",n*100+i);}...

禹会区13453224692: C语言程序题 -
逮阮复方: 首先,你的scanf拼错了..之所以这样说,是因为c语言中,要求输入的格式与scanf语句中定义的格式一致"%d%d%d" 如果正常输入应该是:25 13 10<cr> 或者:25<cr>13<cr>10<cr>

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网