#include<iostream>
using namespace std;
struct Node//创建单链表结构体
{
int date;
Node *next;
};
int list_headinsert(Node **list, int a[], int n);
int getlist(Node *list, int i);
int main()
{
int *p, n;
cout << "请输入n=";
cin >> n;
p = new int[n];
for (int i = 0; i < n; i++)
{
cout << "请输入第" << i << "个元素=";
cin >> p[i];
}
Node **list=new Node*;//创建一个空表；
if (*list == NULL)
{
cout << "空间申请失败";
return 0;
}
for (int i = 1; i < n; i++)//按顺序导出数据元素；
cout << getlist(*list, i) << ' ';
return 1;
}
int list_headinsert(Node **list, int a[], int n)//头插法新建带头结点的单链表，并将数组元素导入
{
Node *p = new Node;
p->next = NULL;
for (int i = n; i >1; i--)
{
Node*p = new Node;
p->date = a[i];
p->next = (*list)->next;
(*list)->next = p;
}
return 1;
}
int getlist(Node *list, int i)//查找链表数据元素
{
Node *p = list->next;
int j = 0;
if (p == NULL)
{
cout << "空表";
return 0;
}
while (p&& j < i)
{
p = p->next;
j++;
}
return p->date;
}

2个回答

11 个月之前 回复

![图片说明](https://img-ask.csdn.net/upload/201905/04/1556935808_498196.png) 代码如下 ``` #include<iostream> using namespace std; struct Node//创建单链表结构体 { int date; Node *next; }; int list_headinsert(Node **list, int a[], int n); int getlist(Node *list, int i); int main() { int *p, n; cout << "请输入n="; cin >> n; p = new int[n]; for (int i = 0; i < n; i++) { cout << "请输入第" << i << "个元素="; cin >> p[i]; } Node **list=new Node*;//创建一个空表； if (*list == NULL) { cout << "空间申请失败"; return 0; } list_headinsert(list, p, n); for (int i = 1; i < n; i++)//按顺序导出数据元素； cout << getlist(*list, i) << ' '; return 1; } int list_headinsert(Node **list, int a[], int n)//头插法新建带头结点的单链表，并将数组元素导入 { Node *p = new Node; p->next = NULL; for (int i = n; i >1; i--) { Node*p = new Node; p->date = a[i]; p->next = (*list)->next; (*list)->next = p; } return 1; } int getlist(Node *list, int i)//查找链表数据元素 { Node *p = list->next; int j = 0; if (p == NULL) { cout << "空表"; return 0; } while (p&& j < i) { p = p->next; j++; } return p->date; } ```

#include "stdio.h" #include "stdlib.h" typedef struct List { int data; struct List *Next; }Node,*NodePtr; NodePtr ListPtr; void ListInsert(NodePtr L,int i) { NodePtr p; NodePtr q; p = L; while(p) //在这里我用 while(p)的话程序就会卡死在这里，如果用while(p->Next)就可以正常运行，请问是为什么 { p = p->Next; } q = (Node*)malloc(sizeof(Node)); q->data = i; p->Next = q; printf("111\n"); p=q; p->Next = NULL; } void ListCreatTail(NodePtr *L) { *L = (Node*)malloc(sizeof(Node)); (*L)->Next = NULL; } void ListDelete(NodePtr L, int i) { int j = 1; NodePtr p,q; p=L; while(p,j < i) { p=p->Next; ++j; } q=p->Next; p->Next = q->Next; free(q); } void ListPrintf(NodePtr L) { NodePtr p; p=L->Next; while(p) { printf("%d\n",p->data); p=p->Next; } } void main() { ListCreatTail(&ListPtr); ListInsert(ListPtr,1); ListInsert(ListPtr,2); ListInsert(ListPtr,3); ListInsert(ListPtr,4); ListInsert(ListPtr,5); ListDelete(ListPtr,2); ListPrintf(ListPtr); }

02-线性结构1 两个有序链表序列的合并----答案错误求解

# 两个有序链表序列的交集 (20分) 已知两个非降序链表序列S1与S2，设计函数构造出S1与S2的交集新链表S3。 输入格式: 输入分两行，分别在每行给出由若干个正整数构成的非降序序列，用−1表示序列的结尾（−1不属于这个序列）。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的交集序列，数字间用空格分开，结尾不能有多余空格；若新链表为空，输出NULL。 ``` #include <stdio.h> #include <stdlib.h> typedef struct LNode { int Data; struct LNode *Next; }List; int main() { List *s1,*s2,*s3,*p1,*p2,*p3; int x1,x2; s1 = (List *)malloc(sizeof(List)); s2 = (List *)malloc(sizeof(List)); s3 = (List *)malloc(sizeof(List)); s1->Next = NULL; s2->Next = NULL; p1 = s1; scanf("%d",&x1); while(x1 != -1) { p1->Next = (List*)malloc(sizeof(List)); p1->Next->Data = x1; p1 = p1->Next; p1->Next = NULL; scanf("%d",&x1); } scanf("%d",&x2); p2 = s2; while(x2 != -1) { p2->Next = (List*)malloc(sizeof(List)); p2->Next->Data = x2; p2 = p2->Next; p2->Next = NULL; scanf("%d",&x2); } p1 = s1->Next; p2 = s2->Next; p3 = s3; s3->Next = NULL; while(p1!=NULL&&p2!=NULL) { if(p1->Data>p2->Data) { p2 = p2->Next; } if(p1->Data<p2->Data) { p1 = p1->Next; } if(p1->Data == p2->Data) { p3->Next = p1; p1 = p1->Next; p2 = p2->Next; p3 = p3->Next; } p3->Next = NULL; } p3 = s3->Next; if(p3 != NULL) { printf("%d",p3->Data); p3 = p3->Next; while(p3 != NULL) { printf(" %d",p3->Data); p3 = p3->Next; } } if(s3->Next == NULL)//当s1,s2链表不为空时，s3为空，运行c错误 { printf("NULL"); } return 0; } ``` 当s1,s2链表不为空时，s3为空，交集为空时程序停止工作

【链表】为什么用L->Next=NULL就出错

[紧急求救]C++：在循环结构中使用链表，程序运行终端

c++链表操作时出现的指针错误
``` struct Node { int data; Node* next; }; typedef Node* List_Node; class List { public: List(); ~List(); void creat_List_last(); // 创建新链表 void print_List(); // 遍历输出链表 private: List_Node head; }; List::List() { head = NULL; } void List::creat_List_last() { List_Node p, q; p = new Node; q = p; cout << "请输入数据（以-1表示结束）:"<<endl; cin >> p->data; while (p->data != -1) { if (head == NULL) head = p; else q->next = p; q = p; p = new Node; cout << "请输入数据（以-1表示结束）:" << endl; cin >> p->data; } q->next = NULL; delete p; } void List::print_List() { cout << "所有数据如下:" << endl; List_Node p=head; while (p) { cout<<p->data<<" "; p = p->next; } } List::~List() { List_Node p=head; while (p) { head = p->next; delete p; } } int main() { List l; l.creat_List_last(); l.print_List(); } ``` 提示：c++ - _Block_Type_Is_Valid (pHead->nBlockUse) Error 对指针操作不是很熟悉，望博友指教

//小萌新在用C++写一个用数组元素创建一个新链表，创建了一个空表之后调用头插法函数时显示发生的异常： 0xC0000005: 写入位置 0xCDCDCDD1 时发生访问冲突。求各位大佬帮帮孩子吧，代码如下 #include<iostream> using namespace std; struct Node { int date; Node *next; }; int list_headinsert(Node **list, int a[], int n); int getlist(Node *list, int i); int main() { int *p, n; cout << "请输入n="; cin >> n; p = new int[n]; for (int i = 0; i < n; i++) { cout << "请输入第" << i << "个元素="; cin >> p[i]; } Node **list = new Node*; (*list)->next = NULL; list_headinsert(list, p, n); for (int i = 1; i < n; i++) cout << getlist(*list, i) << ' '; return 1; } int list_headinsert(Node **list, int a[], int n) { Node *p = new Node; p->next = NULL; for (int i = n; i >1; i--) { Node*p = new Node; p->date = a[i]; p->next = (*list)->next; (*list)->next = p; } return 1; } int getlist(Node *list, int i) { Node *p = list->next; int j = 1; if (p == NULL) { cout << "空表"; return 0; } while (p != NULL && j < i) { p = p->next; j++; } return p->date; } ``` ```

plist *merge(plist *ah,plist *bh) //合并函数 { plist *head,*tail,*p=ah,*q=bh,*ptemp; if(ah==NULL)return bh; if(bh==NULL)return ah; tail=p; if(p->no>q->no) tail=q; while(NULL!=p&&NULL!=q) { if(p->no<=q->no) { ptemp=p;p=p->next; } else { ptemp=q;q=q->next; } tail->next=ptemp;tail=ptemp; } if(NULL==p) { p=q; } ptemp=p; tail->next=ptemp; return head; }

c语言中两个链表的合并（不用结点的方式）总是错误的

C语言：合并有序双向链表问题

【JSON解析】浅谈JSONObject的使用

《MySQL 性能优化》之理解 MySQL 体系结构

【前言】 　　收到一封来信，赶上各种事情拖了几日，利用今天要放下工作的时机，做个回复。 　　2020年到了，就以这一封信，作为开年标志吧。 【正文】 　　您好，我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。 　　先说一下我的基本情况，高考失利，不想复读，来到广州一所大专读计算机应用技术专业。学校是偏艺术类的，计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...

Java 14 都快来了，为什么还有这么多人固守Java 8？

【CSDN编者按】1月2日，阿里巴巴发布《达摩院2020十大科技趋势》，十大科技趋势分别是：人工智能从感知智能向认知智能演进；计算存储一体化突破AI算力瓶颈；工业互联网的超融合；机器间大规模协作成为可能；模块化降低芯片设计门槛；规模化生产级区块链应用将走入大众；量子计算进入攻坚期；新材料推动半导体器件革新；保护数据隐私的AI技术将加速落地；云成为IT技术创新的中心 。 新的画卷，正在徐徐展开。...

Python+OpenCV实时图像处理

2020年一线城市程序员工资大调查

python爬取百部电影数据，我分析出了一个残酷的真相
2019年就这么匆匆过去了，就在前几天国家电影局发布了2019年中国电影市场数据，数据显示去年总票房为642.66亿元，同比增长5.4%；国产电影总票房411.75亿元，同比增长8.65%，市场占比 64.07%；城市院线观影人次17.27亿，同比增长0.64%。 看上去似乎是一片大好对不对？不过作为一名严谨求实的数据分析师，我从官方数据中看出了一点端倪：国产票房增幅都已经高达8.65%了，为什...

Windows可谓是大多数人的生产力工具，集娱乐办公于一体，虽然在程序员这个群体中都说苹果是信仰，但是大部分不都是从Windows过来的，而且现在依然有很多的程序员用Windows。 所以，今天我就把我私藏的Windows必装的软件分享给大家，如果有一个你没有用过甚至没有听过，那你就赚了????，这可都是提升你幸福感的高效率生产力工具哦！ 走起！???? NO、1 ScreenToGif 屏幕，摄像头和白板...

AI 没让人类失业，搞 AI 的人先失业了

2020年，冯唐49岁：我给20、30岁IT职场年轻人的建议

B站是个宝，谁用谁知道???? 作为一名大学生，你必须掌握的一项能力就是自学能力，很多看起来很牛X的人，你可以了解下，人家私底下一定是花大量的时间自学的，你可能会说，我也想学习啊，可是嘞，该学习啥嘞，不怕告诉你，互联网时代，最不缺的就是学习资源，最宝贵的是啥？ 你可能会说是时间，不，不是时间，而是你的注意力，懂了吧！ 那么，你说学习资源多，我咋不知道，那今天我就告诉你一个你必须知道的学习的地方，人称...