#include "stdafx.h" #include "stdio.h" #include "stdlib.h" typedef struct linknode{ int data; struct linknode *next; }node; node *create(){ 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 head->data %d",head->data); return(head); } void print(node *head){ node *p; p = head; while(p != NULL){ printf("\nprint... %d",p->data); p = p->next; } } node *reverse(node *head){ node *prev, *pcur,*pnext; if(head == NULL || head->next ==NULL) return head; prev = head, pcur = prev->next;//有2个或2个以上才反转 while(pcur){ pnext = pcur->next; pcur->next = prev; prev = pcur; pcur = pnext; } head->next = NULL; head = prev; return head; } 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; } node *del(node *head,int num){ node *pcur,*prev; pcur = prev = head ; while(pcur->data != num && pcur->next != NULL){ prev = pcur; pcur = pcur->next; } if(pcur->data == num){//找到了合适的值 if(pcur == head){//要删除的节点是头节点 head = head->next; free(pcur); return head; }else{ prev->next = pcur->next; free(pcur); return head; } }else{//没找到 return head; } } int main(int argc, char* argv[]) { node *head; head = create(); print(head); head = reverse(head); printf("after reverse\n"); print(head); head = insert(head,2); print(head); head = del(head,2); print(head); printf("Hello World!\n"); return 0; }
发表评论
-
gcc gdb常用命令
2010-10-06 11:20 1088gdb 链接: http://fanqiang.chinau ... -
指针数组,数组指针
2010-10-02 14:40 694void test(char* a[]) { ... -
如何用栈实现递归与非递归的转换
2010-04-10 15:18 928http://bbs.chinaunix.net/viewth ... -
华为笔试2
2009-06-16 09:37 960【转】http://hi.baidu.com/xiao1dia ... -
华为笔试1
2009-06-16 09:35 999【转】http://hi.baidu.com/xi ... -
用两个栈实现一个队列的功能
2009-06-03 15:22 2554【转】http://hi.baidu.com/liangjw8 ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:41 1023【转】http://blog.csdn.net/s ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:39 1479【转】http://blog.csdn.net/seraphs ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:38 855【转】http://blog.csdn.net/s ... -
嵌入式程序员应该知道的16个问题
2009-05-29 15:37 858【转】http://blog.csdn.net/s ... -
c预编译 #define相关
2009-05-29 15:14 1174#是生成字符串: #define a(x) ... -
排序算法和二分查找
2009-05-17 15:50 786using namespace std; #includ ... -
C移位
2009-05-15 09:56 1341【转】 C提供了六种位运算运算符;这些运算符可能只允许整型操作 ... -
sizeof union struct 内存对齐
2009-05-14 20:30 2522【转】http://www.programfan.com/bl ... -
求100的阶乘
2009-05-06 16:32 1507#include <stdio.h> int m ... -
字符串操作
2009-05-03 15:19 797#include "stdafx.h" ... -
C字符串反转
2009-05-03 10:53 1758更改下面程序 #include string.h ... -
C题库连接
2009-04-29 09:28 743http://blog.chinaunix.net/u2/64 ...
相关推荐
C语言链表相关的面试题在软件开发领域的面试中是非常常见的,这是因为链表作为一种基本的数据结构,对于理解数据结构、算法以及内存管理等方面有着重要的作用。以下是一些关于C语言链表的面试题及其详细解释。 1. ...
C语言链表C语言链表C语言链表C语言链表
大一初学C语言时的期末作业,涉及到链表的建立和功能的实现,涉及指针、函数、动态结构建立等方面的知识,初学者可以参考参考尝试尝试哟!!!
C语言链表C语言链表C语言链表C语言链表C语言链表
C语言链表类题目 写函数建立一个有三名学生数据的单项动态链表,很全面,各种测试都试过了,环境VC6.0
C语言链表的应用,包括建立链表、删除链表、插入/删除元素操作
小型通讯录程序c语言链表实现(源代码) CentOS下vim编辑器gcc编译器
适用于初学者学习C语言链表操作的源代码,内含链表的增添,查找,删除等基本操作,并附有详细的代码注释
c语言链表,用来编写c语言程序的。详细情况下了就知道了。
C语言——链表技术实现的学生信息管理。直接把txt文档中的代码复制到vc++ 6.0中即可。
数据结构C语言链表的实现
C语言链表.pdf
C语言中关于链表的总结内容,内附代码例题,详细的有条理的讲解链表内容
C语言链表
C语言链表PPT课件.pptx
C语言链表学习教案.pptx
C语言链表程序C语言链表程序
C语言实现多种链表快速排序
C语言链表详解PPT课件.pptx
用C语言实现的链表多项式的运算,实现多项式加法和乘法