#include <iostream>
#include <stdlib.h>
using namespace std;
struct LinkNode
{
LinkNode* next;
int data;
};
typedef LinkNode LinkList;
LinkList* CreateList()
{
LinkList* list = NULL;
LinkNode* p = list;
LinkNode* s;
int data;
while (true)
{
cin >> data;
if (data == 0)
break;
s = (LinkList*)malloc(sizeof(LinkList));
s->data = data;
s->next = NULL;
if (list == NULL)
{
list = s;
p = s;
}else{
p->next = s;
}
p = s;
}
cout << "Created List" << endl;
return list;
}
void LoopList(LinkList* list)
{
if (list == NULL)
{
cout << "Empty list" << endl;
return;
}
LinkNode* p = list;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main() {
LinkList* list = CreateList();
LoopList(list);
system("pause");
return 0;
}
#include <iostream>
#include <stdlib.h>
using namespace std;
struct LinkNode
{
LinkNode* next;
int data;
};
typedef LinkNode LinkList;
LinkList* CreateSortedList()
{
LinkList* list = NULL;
LinkNode* p;
LinkNode* prev_p;
LinkNode* s;
int data;
while (true)
{
cin >> data;
if (data == 0)
break;
s = (LinkList*)malloc(sizeof(LinkList));
s->data = data;
s->next = NULL;
if (list == NULL)
{
list = s;
}
else{
p = list;
prev_p = NULL;//由于单链表无法直接定位到上一个结点,所以保存上一个结点的临时指针
while (p != NULL)
{
if (p->data > s->data)
{
if (prev_p == NULL)//需要插入到第一个结点之前的情况,需要移动头指针list的位置
{
s->next = p;
list = s;
}
else
{
s->next = p;
prev_p->next = s;
}
break;
}
else if (p->next = NULL)//已到链表尾部的情况
{
p->next = s;
break;
}
else{//当前不符合插入条件,继续往下一个结点移动
prev_p = p;
p = p->next;
}
}
}
}
cout << "Created Sorted List" << endl;
return list;
}
void LoopList(LinkList* list)
{
if (list == NULL)
{
cout << "Empty list" << endl;
return;
}
LinkNode* p = list;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main() {
LinkList* list = CreateSortedList();
LoopList(list);
system("pause");
return 0;
}
#include <iostream>
#include <stdlib.h>
using namespace std;
struct LinkNode
{
LinkNode* next;
int data;
};
typedef LinkNode LinkList;
LinkList* CreateList()
{
LinkList* list = NULL;
LinkNode* p = list;
LinkNode* s;
int data;
while (true)
{
cin >> data;
if (data == 0)
break;
s = (LinkList*)malloc(sizeof(LinkList));
s->data = data;
s->next = NULL;
if (list == NULL)
{
list = s;
p = s;
}else{
p->next = s;
}
p = s;
}
cout << "Created List" << endl;
return list;
}
void LoopList(LinkList* list)
{
if (list == NULL)
{
cout << "Empty list" << endl;
return;
}
LinkNode* p = list;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
LinkList* Reverse(LinkList* list)
{
if (list == NULL)
{
cout << "Empty list" << endl;
return NULL;
}
LinkNode* p = list;
LinkNode* rear = NULL;
LinkNode* temp;
while (p != NULL)
{
temp = p;
p = p->next;
temp->next = rear;
rear = temp;
}
return rear;
}
int main() {
LinkList* list = CreateList();
LinkList* revList = Reverse(list);
LoopList(revList);
system("pause");
return 0;
}