05 _ print the linked list from the end to the end, and print from the end to the end
#include <iostream> #include <vector>using namespace std;typedef struct ListNode {int data;struct ListNode * next;ListNode(int d) : data(d), next(NULL){}};ListNode *initList() {ListNode * head = NULL;ListNode * p = NULL;int number = 10;int i = 0;head = new ListNode(0);p = head;for(i = 1; i < number; i++) {p->next = new ListNode(i);p = p->next;}return head;} void printList(ListNode *head) {ListNode * p = head;if (!head){return;}while (p && p->next) {cout<<p->data<<"->";p = p->next; }if (p) {cout<<p->data<<endl;}}//using vector to store the ListNode->data, and print it from the end to startvoid reversePrintListUsingVector(ListNode *head){vector <int> vec;if(!head) {return;}ListNode *p = head;while (p) {vec.push_back(p->data);p = p->next;}for (vector<int>::size_type i = vec.size() - 1; i > 0; i--) {cout<<vec[i]<<"->";}cout<<vec[0]<<endl;} //change the ListNode:delete the head->next and insert the deleted node after the newHead;ListNode *reversePrintList(ListNode *head){if(!head) {return NULL;}ListNode *deletedNode = head;ListNode *oldHead = head;ListNode *tempHead = new ListNode(0);while(oldHead) {deletedNode = oldHead; oldHead = oldHead->next;deletedNode->next = tempHead->next;tempHead->next = deletedNode;}ListNode * reserverdhead = tempHead->next;delete tempHead; return reserverdhead; } void main(){ /********In the first way, the List was not changed, but we need a vector to store the list*************/ListNode * head = initList();cout<<"initial List:"<<endl;printList(head);cout<<"the first way to reverse the List:"<<endl;reversePrintListUsingVector(head);/********In the second way, the List was changed and we need to new a listNode*************/cout<<endl;cout<<"initial List:"<<endl;printList(head);cout<<"the second way to reverse the List:"<<endl;head = reversePrintList(head);printList(head);}
Enter the head node of a linked list and output the value of each node from the end to the end,
P0 = (node *) malloc (sizeof (node ));
P1 = (node *) malloc (sizeof (node ));
P2 = (node *) malloc (sizeof (node ));
P3 = (node *) malloc (sizeof (node ));
Add 4 more words to the main function
Allocate memory space to p0, p1, p2, p3, p4
Write a program that reads a string, saves it to a linked list, and prints it in reverse order.
If it must be a linked list, define a two-way linked list, such
Struct WORD
{
Char;
WORD * next;
WORD * prev;
}
Use prev to print data during next connection during storage.
Scanf ("% c", temp );
WORD * p;
P = (WORD *) malloc (sizeof (WORD ));
Think about the remaining code.