注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

程序员小站

J2EE丨Spring | JVM | Scala

 
 
 

日志

 
 

单链表-c语言实现  

2011-10-11 19:07:42|  分类: 程序天下 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"

typedef struct node
{
int data;
struct node * pNext;
}*PNODE,NODE;

PNODE creat_list(void);
void traverse_list(PNODE pHead);
bool is_empty(PNODE pHead);
int length_list(PNODE pHead);
bool insert_list(PNODE,int,int);
bool delete_list(PNODE,int,int*);
void sort_list(PNODE);

int main(int argc, char* argv[])//20
{
PNODE pHead = NULL;
pHead = creat_list(); //创建一个非循环单链表。并将首地址赋给pHead
int val;
/*
if(is_empty(pHead)){
printf("链表为空!\n");
}else{
printf("链表不空!\n");
}
*/

//int length = length_list(pHead);
//printf("%d\n",length);

traverse_list(pHead);
//sort_list(pHead);
//traverse_list(pHead);
//insert_list(pHead,1,111);
//traverse_list(pHead);
delete_list(pHead,2,&val);
printf(" the delete value is : %d\n",val);
traverse_list(pHead);
return 0;
}
bool is_empty(PNODE pHead){
if(pHead->pNext == NULL)
return true;
else
return false;
}
int length_list(PNODE pHead){
int cnt = 0;
PNODE p = pHead;
while(p->pNext != NULL){
cnt++;
p = p->pNext; 
}
return cnt;
}
PNODE creat_list(void){
int len;
int val;
PNODE pHead = (PNODE)malloc(sizeof(NODE));
if(pHead == NULL){
printf("头节点创建失败!");
exit(-1);
}
pHead->pNext = NULL;
PNODE pTail = pHead;

printf("input length:len = ");
scanf("%d",&len);

for(int i = 0;i < len; i++){
printf("请输入:第%d个节点的值 ",i+1);
scanf("%d",&val);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew){
printf(" 新节点创建失败!");
exit(-1);
}
pNew->data = val;
pNew->pNext = NULL;
pTail->pNext = pNew;
pTail = pNew;
}
return pHead;
}
void traverse_list(PNODE pHead){
PNODE p = pHead->pNext;
if(NULL != pHead->pNext){
while(p != NULL){
printf("%d ",p->data);
p = p->pNext; 
}
}else{
printf("链表为空!");
}
printf("\n");
//return;
}
void sort_list(PNODE pHead){
int i,j,t;
int len = length_list(pHead);
PNODE p,q;
for(i=0,p=pHead->pNext ; i<len-1;i++,p=p->pNext){
//printf("%d\n ",p->data);
for(j=i,q=p->pNext;j<len-1;j++,q=q->pNext){
// printf("%d ",q->data);
if(p->data > q->data){
t = q->data;
q->data = p->data;
p->data = t;
}
}
// printf("\n");
}
//return pHead;
}
//向链表pos位置前面加一个值 ,pos最小为1.
bool insert_list(PNODE pHead,int pos,int val){
int i=0;
PNODE p = pHead;
while(p!=NULL && i<pos-1){
i++;
p = p->pNext;
}
//printf("%d",p->data);
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(NULL == pNew){
printf(" 新节点创建失败!");
exit(-1);
}
if(i>pos-1 || NULL== p){
return false;
}
pNew->data=val;
pNew->pNext=p->pNext;
p->pNext=pNew;
return true;
}
bool delete_list(PNODE pHead,int pos,int* val){
int i=0;
PNODE p = pHead;
while(p->pNext!=NULL && i<pos-1){
i++;
p = p->pNext;
}
if(i>pos-1 || NULL== p->pNext){
return false;
}
PNODE q = p->pNext;
p->pNext=p->pNext->pNext;
*val = q->data;
free(q);
q=NULL;

return true;
}
  评论这张
 
阅读(207)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017