#include<stdio.h> #include<stdlib.h> struct node { int data; struct node * next; }*head; struct node * newnode() { return (struct node *)malloc(sizeof(struct node)); } void view() {
链表创建,显示,删除和倒置 #include "stdafx.h" #include <stdio.h> #include <malloc.h> typedef struct data { int Data; struct data *next; }str; void Create(str **p) { *p=(str*)malloc(sizeof(str
//recursion链表倒置法1
Node * reverse(Node * head)
{
if(head == NULL || head->next == NULL)
return head;
Node * q = head->next; //先翻转head->next
Node * newHead = reverse(head->
以前写的都是生成的都是逆序的,所以不需要头结点。如果生成正序链表则需要头结点来完成。 #include <iostream>
#include <string>
using namespace std;
class MList{
struct LNode{
int elem;
LNode *next;
};
//利用一个头结点,一个头指针和一个尾指针实现正序插入的链表
//hea
#define MAX_ITEM 10 typedef struct node *link; struct node{ int data; link next; }; link Create(); void Destory(link head); void Print(link head); link Revert(link head); Node Create() { link x = NULL
#include"iostream"
using namespace std;
struct node
{
int data;
struct node *next;
};
typedef struct node Node;
node * reverse( node * head)
{
node * p,*q;
p=head->next;
在笔试中经常到将一个单向链表倒置的问题,看了网上的一些解法,觉得头插法是一种比较好的做法,记下来,供自己参考.. 在数据结构(严蔚敏版)线性表一节中,有一个逆序创建链表的算法,头插法和这个算法差不多,区别就是逆序创建链表是用给出的数字序列创建链表,而头插法是在原来的链表中从第一个节点开始,每次取出一个节点,然后把这个节点插在头节点后面,直到最后一个节点插到头节点后面,那么原来的链表就
链表倒置的函数: NODE *invert(NODE *h) //头指针发生变化,故将新的头指针返回重置 { NODE *a, *b, *c; a = h; b = h->next; c = b->next; a->next = NULL; do { b->next = a; a = b; b = c; c = c->next; }while(c!=NULL); b->next = a; a