双链表反转函数c语言 双链表反转函数c语言怎么写

c语言,链表的反转,请写出代码,并讲解下,谢了!!!!!

扣着的是头节点(头子)

目前创新互联建站已为上千的企业提供了网站建设、域名、雅安服务器托管、网站改版维护、企业网站设计、凯里网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

车是首节点(首子)

马是次节点(次子)

牙签细的是指针指向,香头发黑的是指向,铁头细的是指向。

根据步骤写程序的伪算法(3步4循环,7张图片搞定),如下:

以下是while循环(条件:香头指向不为空)

第一个循环把马弄到车前面,

第二个循环把相弄到马前面

第三个循环把士弄到相前面

........

直到香指向为空后停止循环。

代码如下:只需要一个首结点pHead,就能把链表找到,并倒置。具体代码如下

p香=pHead-pNext;

p铁=p香-pNext;

p香-pNext=NULL;

P香=p铁

while(p香 !=NULL)

{

p铁=p香-pNext;

p香-pNext=pHead-pNext;

pHead-pNext=p香;

p香=p铁;

}

对照伪算法(三步四循环),和上面的代码是一一对应的:

第一步:香头指向首子,铁头指向次子

第二步:删掉首子指向次子(铁头所指向的那个子)的牙签

第三步:香头跟着铁头

以下循环条件:(条件:香头指向不为空)

{

循环1:铁头移动到香头的下一个指向

循环2:香头的下一个指向首子

循环3:头子的下一个跟着香头

循环4:香头跟着铁头

}

自己用道具操作几遍,然后把流程背会,以后自己根据流程写代码即可。

c语言,链表的反转怎么写代码?

单链表反转很简单,只说下思路:

1,从头到尾循环遍历链表

2,取下头结点,作为尾结点,尾结点此时也为头结点

3,采用前插法,将步骤二中取下的结点一个一个连接到头结点前面,成为新的头结点。

4,链表全部遍历完后,新的链表产生了,是原来链表的反转。

c++链表反转。有要求

#includecstdio

#includecstdlib

struct Node{

char name[50];

int salary;

Node* next;

};

Node* createNode()

{

Node* lastnode = 0;

Node* head = 0;

int num;printf("请输入员工的个数:");scanf("%d",num);

char buf[50];

for(int i=0;inum;++i)

{

Node* node = new Node;

printf("请输入员工%d的名字:",i+1);scanf("%s",node-name);

printf("请输入员工%d的工资:",i+1);scanf("%s",buf);node-salary=atoi(buf);

if(lastnode!=0) lastnode-next=node; else head=node;

lastnode=node;

}

lastnode-next=0;

return head;

}

Node* reverseNode(Node* head)

{

Node* iter = head;

Node* lastiter = 0;

while(iter!=0)

{

Node* temp=iter-next;

iter-next=lastiter;

lastiter=iter;

iter=temp;

}

return lastiter;

}

Node* printNode(Node* head)

{

Node* iter = head;

while(iter!=0)

{

printf("员工的名字:%s 员工的工资:%d\n",iter-name, iter-salary);

iter=iter-next;

}

}

int main()

{

Node* head = createNode();

printNode(head);

printf("反转:\n");

Node* head2 = reverseNode(head);

printNode(head2);

return 0;

}

c语言数据结构链表反转

两处scanf("%c",data);后面都要加一行getchar();

另外代码中的%s要改成%c


名称栏目:双链表反转函数c语言 双链表反转函数c语言怎么写
文章URL:http://myzitong.com/article/ddjiops.html