싱글 체인 시트 의 reverse

2740 단어 데이터 구조
단일 링크 의 역순: 기 존 링크 의 노드 값 을 역순 으로 합 니 다.
잔말 말고 코드 올 리 기;다음 코드 는 두 가지 버 전 을 제공 합 니 다. sllreverse 는 내 가 할 때 생각 하 는 어 리 석 은 방법 이 야, answerreverse 는 내 가 인터넷 에서 본 버 전이 다.
#include
#include 
#define N 5
typedef struct NODE{
    struct NODE *link;
    int value;
}Node;
Node* sll_reverse(Node *first);
int insert(Node **linkp,int value) ;
void print(Node* rootp);
unsigned int count(Node*linkp);
struct NODE *answer_reverse( struct NODE *current ); 
int main (void) 
{
    Node  *p1 = (Node *)malloc( sizeof( Node ) );
    p1->link=NULL;
    p1->value=5;
    int i;
    int value;
    printf("        :
"); while(scanf("%d",&value)==1) insert(&p1,value); print(p1); printf("
, :
"); //print(sll_reverse(p1)); print(answer_reverse(p1)); return 0; } unsigned int count(Node*linkp) { unsigned int num=0; Node *tmp=linkp; if(!linkp) { printf("link is NULL
"); exit(1); } while(tmp) { ++num; tmp=tmp->link; } return num; } Node* sll_reverse(Node *first) { if(first==NULL)// return NULL; Node *newnode=(Node*)malloc(sizeof(Node)); if(newnode==NULL) return NULL; Node*tmp=first; int n=count(first);// int *p=(int*)malloc(n*sizeof(int));// int i=0; while(tmp!=NULL)// { p[i++]=tmp->value; tmp=tmp->link; } newnode->link=NULL; newnode->value=p[n-1];// , for(i=n-2;i>=0;i--)// , insert(&newnode,p[i]); return newnode; } struct NODE *answer_reverse( struct NODE *current )// { struct NODE *previous=NULL; struct NODE *next; //for( previous = NULL; current != NULL; current = next ){ //next = current->link; //current->link = previous; //previous = current; //} while(current!=NULL) { next=current->link;//next current->link=previous;// , previous=current;// current=next;// next current, current==NULL } return previous; } int insert(Node **linkp,int value) { Node *current; Node *new; while((current=*linkp)!=NULL) linkp=¤tt->link; new=(Node*)malloc(sizeof(struct NODE)); if(new==NULL) return -1; new->value=value; new->link=current; *linkp=new; return 0; } void print(Node* rootp) { if(rootp==NULL) exit(1); Node*tmp=rootp; while(tmp) { printf("value=%d
",tmp->value); tmp=tmp->link; } }

좋은 웹페이지 즐겨찾기