1. 程式人生 > >輸入字串,建立一個單鏈表,操作單鏈表使每相鄰的兩個字元交換位置

輸入字串,建立一個單鏈表,操作單鏈表使每相鄰的兩個字元交換位置

 

題目如上圖所示 ,程式碼如下:

#include <iostream>
#include <string>

using namespace std;

struct linknode{
	char data;
	linknode * next;
};

int main() {
	linknode* head = NULL;
	linknode* tail = NULL;
	string chs;
	cin>>chs;
	for(int i=0;i<chs.size();i++){
		linknode* newNode=(linknode*)malloc(sizeof(linknode));
		newNode->data=chs[i];
		newNode->next=NULL;
		if(tail==NULL)
			head=tail=newNode;
		else
		{
			tail->next=newNode;
			tail=newNode;
		}
	}
	if(head==NULL) 
		return 0;
	linknode *q=head,*pre=NULL;
	while(q && q->next)
	{
		linknode *p1=q,*p2=q->next;
		q=p2->next;
		p1->next=p2->next;
		p2->next=p1;
		if (pre == NULL) 
			head = p2;
		else		 
			pre->next = p2;
		pre = p1;
	}

	while(head!=NULL){
		cout<<head->data;
		head=head->next;
	}
	cout << endl;
	return 0;
}

積累積累。