单链表面试题

来源:互联网 发布:电商用户数据分析 编辑:程序博客网 时间:2024/05/11 04:33

例1:编程实现一个单链表的建立。

#include <iostream>#include <stdio.h>#include <string.h>#include <conio.h>using namespace std;typedef struct student;{int data;struct student *next;}node;node *creat(){node *head,*p,*s;int x,cycle=1;head=(node*)malloc(sizeof(node));p=head;while(cycle){printf("\nplease input the data:");scanf("%d",&x);if(x!=0){s=(node*)malloc(sizeof(node));s->data=x;printf("\n %d",s->data);p->next=s;p=s;}else cycle=0;}head=head->next;p->next=NULL;printf("\n yyy %d",head->data);return(head);}


例2:编程实现单链表的测长。

int length(node *head){int n=0;node *p;p=head;while(p!=NULL){p=p->next;n++;}return(n);}


例3:编程实现单链表的打印。

void print(node *head){node *p;int n;n=length(head);printf("\nNow,These %d records are:\n",n);p=head;if(head!=NULL)while(p!=NULL){printf("\n uuu %d ",p->data);p=p->next;}}


例4:编程实现单链表删除结点。

node *del(node *head,int num){node *p1,*p2;p1=head;while(num!=p1->data&&p1->next!=NULL){p2=p1;p1=p1->next;}if(num==p1->data){if(p1==head){head=p1->next;free(p1);}elsep2->next=p1->next;}elseprintf("\n%d could not been found",num);return(head);}


例5:编程实现单链表的插入.

node *insert(node *head,int num){node *p0,*p1,*p2;p1=head;p0=(node *)malloc(sizeof(node));p0->data=num;while(p0->data>p1->data&&p1->next!=NULL){p2=p1;p1=p1->next;if(p0->data<=p1->data){if(head==p1){p0->next=p1;head=p0;}else{p2->next=p0;p0->next=p1;}}else{p1->next=p0;p0->next=NULL;}return(head);}


例6:编程实现单链表的排序.

node *sort(node *head){node *p,*p2,*p3;int n;int temp;n=length(head);if(head==NULL||head->next==NULL)return head;p=head;for(int j=1;j<n;++j){p=head;for(int i=0;i<n-j;++i){if(p->data>p->next->data){temp=p->data;p->data=p->next->data;p->next->data=temp;}p=p->next;}}return head;}


0 0
原创粉丝点击