解题思路:
注意事项:
参考代码:
#include "stdio.h"
#include<stdlib.h>
typedef int Elemtype;
typedef struct LNode //结构定义
{
Elemtype data;
Elemtype data1;
struct LNode* next;
}LNode, * LinkList;
void create_H(LinkList& L) //头插法建立单链表(逆序)
{
//printf("INPUT:");
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
/*LNode* s;
int x;
scanf("%d", &x);
while (x != 9999)
{
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
s->next = L->next;
L->next = s;
scanf("%d", &x);
}*/
}
void create_R(LinkList& L) //尾插法建立单链表(顺序)
{
printf("INPUT:");
L = (LinkList)malloc(sizeof(LNode));
L->next = NULL;
LNode* s, * r = L;
int x;
scanf("%d", &x);
while (x != 9999)
{
s = (LNode*)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;
scanf("%d", &x);
}
r->next = NULL;
}
void printf_L(LinkList L)//打印单链表
{
LNode* p; p = L;
printf("单链表为:");
while (p->next != NULL)
{
p = p->next;
printf("%d ", p->data);
}
printf("\n");
}
Elemtype getelem(LinkList L, int i) //按序号查找
{
LNode* p; p = L;
int j = 0;
while (p != NULL && j < i)
{
p = p->next; j++;
}
//printf("%d", p->data);
return p->data;
}
int Locate_L(LinkList L, Elemtype e) //按值查找
{
LNode* p; p = L;
int j = 0;
while (p->data != e && p != NULL)
{
p = p->next;
j++;
}
return j;
}
int length(LinkList L) //单链表长度
{
LNode* p; p = L;
int j = 0;
while (p->next != NULL)
{
p = p->next;
j++;
}
return j;
}
void Delete_L(LinkList& L, int i) //删除给定序号节点
{
LNode* p; p = L;
int j = 0;
while (p != NULL && j < i - 1) //找到i-1个节点
{
p = p->next; j++;
}
LNode* q; q = p->next;
p->next = q->next;
free(q);
}
void Insert_L(LinkList& L, int i, Elemtype e) //第i个位置插入e
{
LNode* p; p = L;
int j = 0;
LNode* s;
s = (LNode*)malloc(sizeof(LNode));
s->data = e;
while (p != NULL && j < i - 1) //找到i-1个节点
{
p = p->next;
j++;
}
s->next = p->next;
p->next = s;
}
int A(LinkList L)
{
LNode* p; p = L;
int sum = 0;
p = p->next;
while (p)
{
sum += p->data;
p = p->next;
}
return sum;
}
int main()
{
LinkList L; LinkList LB;
create_H(L); create_H(LB);
//printf_L(L);
//printf("序号查找的值为:%d\n", getelem(L,4));
//printf("长度:%d\n", length(L));
//printf("值查找的序号为:%d\n", Locate_L(L, 4));
//Delete_L(L, 3);
//Insert_L(L, 3, 999);
//int n; scanf("%d", &n);
for (int i = 0; i < 10; i++)
{
int x;
scanf("%d", &x);
Insert_L(L, 1, x);
scanf("%d", &x);
Insert_L(LB, 1, x);
}
//printf_L(L);
//printf_L(L);
printf("%d+%di", A(L), A(LB));
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复