【原创】取简单的链表操作
<font face="Verdana">/* 编写函数实现链表的逆置。*/<br/>#include <stdio.h> /*标准输入、输出函数库*/<br/>#include <stdlib.h><br/>#define LEN sizeof(struct list)<br/>/*定义节点数据类型*/<br/>struct list<br/>{<br/> int data; /*节点的数据类型,可以是其它类型*/<br/> struct list *next;<br/>};<br/>/* 创建链表,并返回表头指针 */<br/>struct list *create(void);<br/>/*对链表逆置的函数*/<br/>struct list *invert(struct list*);<br/>/*输出链表*/<br/>void print(struct list*);<br/>int main()<br/>{<br/> struct list *h,*t; /*定义一个链表,h为头指针*/<br/> h = create(); /*创建链表*/<br/> printf("创建的链表是:\n");<br/> print(h); /*输出所创建的链表*/<br/> t = invert(h); /*对链表进行逆置*/<br/> printf("逆置后的链表是:\n");<br/> print(t); /*输出逆置后的链表*/<br/> return 0;<br/>} <br/>struct list *create() /* 创建链表,并返回表头指针。带一个头指针的链表 */<br/>{<br/> struct list *head; /* 表头 */<br/> struct list *p; /* 新建结点 */<br/> struct list *tail; /*表尾节点*/<br/> int input; /*输入的数据*/<br/> head = NULL; /* 还没有任何数据,表头为空 */<br/> tail = head; /*尾指针首先指向表头指针*/<br/> printf("请输入结点数据:\n");<br/> scanf("%d", &input);<br/> while (input != 0)<br/> /* 假设data为0表示输入结束 */<br/> {<br/> p = (struct list*)malloc(LEN); /* 新建一个结点 */<br/> p->data = input;<br/> p->next = NULL;<br/> if (head == NULL)<br/> /*链表为空表*/<br/> head = p;<br/> else<br/> tail->next = p;<br/> /* 在表尾链接新结点 */<br/> tail = p; /* 新建结点成为表尾 */<br/> printf("请输入结点数据:\n");<br/> scanf("%d", &input);<br/> } if (head != NULL)<br/> /*输入了数据,已插入节点*/<br/> tail->next = NULL;<br/> /* 输入结束,表尾结点的下一个结点为空 */<br/> return head; /* 返回表头指针 */<br/>}<br/>void print(struct list *head) /*输出链表*/<br/>{<br/> if (head == NULL)<br/> {<br/> printf("链表空!\n");<br/> return ;<br/> } <br/> while (head != NULL)<br/> {<br/> printf("%4d", head->data);<br/> head = head->next;<br/> }<br/> printf("\n");<br/>}<br/>/*对链表逆置的函数*/<br/>struct list *invert(struct list *head)<br/>{<br/> struct list *p, *q; /*用于逆置的中间变量*/<br/> if (head == NULL)<br/> {<br/> printf("链表空!\n");<br/> return head;<br/> } p = head;<br/> head = NULL;<br/> while (p != NULL)<br/> {<br/> q = p->next;<br/> p->next = head;<br/> head = p;<br/> p = q;<br/> }<br/> return head;<br/>}</font> <p>.....被这玩意给玩过了- -!</p><p> </p>
<p>上次陈辉弄的那个代码里用的就是链表,直接晕掉@_@</p>
页:
[1]