本人C++和数据结构初学者,在这里记录下自己的一些学习心得,有不对之处希望各位指正。
最近一直在看程杰所著的《大话数据结构》,书中跑的代码是基于C,自己试着用C++练习一遍。借鉴了这位博客https://blog.csdn.net/chixujohnny/article/details/50900504的思路。整个代码如下。
#include <iostream>
using namespace std;
struct ListNode
{
int data;
ListNode *next;
};
//尾插法
void setList(ListNode *L,int n)
{
ListNode *p = L;
for (int i = 0; i < n; i++)
{
ListNode *pNewNode = new ListNode;
pNewNode->data = i + 1;
pNewNode->next = NULL;//尾部结点尾指针为空
p->next = pNewNode;//上一个结点指向当前结点
p = pNewNode;//设置当前结点为尾结点
}
}
//输出链表
void printList(ListNode *head)
{
ListNode *medium;
medium = head;
while ((medium=medium->next) != NULL)
{
cout << medium->data << " ";
//medium->data = medium->next->data;
//medium->next = medium->next->next;
}
cout << endl;
}
//查找链表第i个元素
void searchList(ListNode *head, int i)
{
ListNode *p;
p = head;
int j = 0;
while (p && (j < i))
{
p = p->next;
++j;
}
if (!p||j>i)
{
printf("第%d个元素不存在", i);
}
cout << p->data << endl;
}
//插入元素到链表第i个结点后
void insertList(ListNode *head, int i,int n)
{
ListNode *p;
p = head;
int j = 0;
while (p && (j < i))
{
p = p->next;
++j;
}
if (!p || j>i)
{
printf("第%d个元素不存在", i);
return;
}
ListNode *s = new ListNode;
s->data = n;
s->next = p->next;