搜狐面试的题目,临时写了这个程序,今天拿出来和大家分享,希望能有助于大家找到好的工作。
1. 编程,将一个链表倒序。#include<stdio.h> #include<malloc.h> typedef struct LinkList { int d; struct LinkList *next; }Lnode;
//链表倒序
void Daoxu(Lnode **Head) { Lnode *q,*p,*r,*l; p=*Head; q=p->next; p->next=NULL; while(q) { r=q->next; q->next=p; p=q; q=r; } *Head=p; l=*Head; while(l) { printf("%d\n",l->d); l=l->next; } }
//建立头结点
void Init(Lnode **Head) { *Head=(Lnode *)malloc(sizeof(Lnode)); (*Head)->next=NULL; (*Head)->d=0;//假设头结点中存储的数据是0. }
//建立链表,输入-1退出链表 void Link(Lnode **Head) { Lnode *p,*q; int i; do{ p=(Lnode*)malloc(sizeof(Lnode)); scanf("%d",&i); if(i==-1) break; p->d=i; p->next=NULL; q=*Head; while(q->next) q=q->next; q->next=p; }while(1); } void main() { Lnode *Head,*q; Init(&Head); Link(&Head); q=Head; while(q) { printf("%d\n",q->d); q=q->next; } printf("\n\n"); Daoxu(&Head); }
这个程序是在VC6.0下已经编译通过了,本程序是本人手写,思路是:建立头结点,创建链表,链表倒序。可能存在这样那样的问题,但是我觉的应付面试应该没有什么大的问题。
|