解题思路:

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论