日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8月1日

發布時間:2024/1/18 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8月1日 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

7、題目:設單鏈表的表頭指針為h,結點結構由data和next兩個域構成,其中data域為字符型。
試設計算法判斷該鏈表的前n個字符是否中心對稱。例如xyx,xyyx都是中心對稱。

#include <stdio.h> #include <stdlib.h> #define N 3struct node {char data;struct node * next; };typedef struct node Node; typedef struct node* Link;void create_node(Link *new_node) {*new_node = (Link)malloc(sizeof(Node));if(*new_node == NULL){printf("malloc error!\n");exit(-1);} }void create_link(Link *head) {create_node(head);(*head)->next = NULL; }void insert_node_head(Link head,Link new_node) {new_node->next = head->next;head->next = new_node; }int get_length(Link head) {Link p = head->next;int count = 0;while(p != NULL){count++;p = p->next;}return count; }void judge_link(Link head) {Link p = NULL;Link q = NULL;int length = get_length(head);int i = 1;int j = 1;int flag = 0;if(head == NULL){printf("no such link!\n");return;}p = head->next;q = p;if(p == NULL){printf("link is empty!\n");return;}while(i != length / 2 + 1){while(j != length - i + 1){q = q->next;j++;}if(p->data == q->data){p = p->next;q = p;i++;j = i;flag = 1;}else{flag = 0;i++;j = i;}}if(flag == 1){printf("對稱!\n");}else{printf("不對稱!\n");}}int main() {Link head;Link new_node;int i;create_link(&head);printf("輸入字符:");for(i = 1;i <= N;i++){create_node(&new_node);new_node->data = getchar();getchar();insert_node_head(head,new_node);}judge_link(head);return 0; }

1、題目:利用鏈表實現一個先入后出的棧結構,并提供棧操作的push和pop的接口

#include <stdio.h> #include <stdlib.h>struct stack {int num;struct stack * next; };typedef struct stack Stack; typedef struct stack* Link;void create_node(Link *node) {*node = (Link)malloc(sizeof(Stack));if(*node == NULL){printf("malloc error!\n");exit(-1);} }void create_link(Link *head) {create_node(head);(*head)->next = NULL; }void push_stack(Link head,Link new_node) {new_node->next = head->next;head->next = new_node; }void pop_stack(Link head) {Link p;int n;p = head->next;while(p != NULL){n = p->num;printf("%d\n",n);head->next = p->next;free(p);p = head->next;} }int main() {Link head;Link new_node;int i;create_link(&head);for(i = 0;i < 10;i++){create_node(&new_node);new_node->num = i + 1;push_stack(head,new_node); //進棧}pop_stack(head); //出棧return 0; }

2、題目:使用雙向鏈表來實現雙向隊列
使用一個雙向鏈表來實現一個雙向的隊列,并且讓隊列具有以下的操作:

(1)判斷隊列是否為空

(2)得到雙向隊列中元素的個數

(3)向左端添加一個新元素

(4)向右端添加一個新元素

(5)從左端刪除一個元素

(6)從右端刪除一個元素

#include <stdio.h> #include <stdlib.h>struct quece {int num;struct quece * next;struct quece * prior; };typedef struct quece Quece; typedef struct quece* Link;void create_node(Link *node) {*node = (Link)malloc(sizeof(Quece));if(*node == NULL){printf("malloc error!\n");exit(-1);} }void create_link(Link *head) {create_node(head);(*head)->prior = (*head)->next = *head; }void push_quece_right(Link head,Link new_node) {new_node->next = head->next;new_node->prior = head;head->next = new_node;new_node->next->prior = new_node; }void pop_quece_right(Link head) {Link p;if(head == NULL){printf("no such quece!\n");return;}p = head->prior;if(p == NULL){printf("quece is empty!\n");return;}while(p != head){printf("%d\n",p->num);p = p->prior;} }void push_quece_left(Link head,Link new_node) {new_node->next = head;new_node->prior = head->prior;head->prior = new_node;new_node->prior->next = new_node; }void pop_quece_left(Link head) {Link p;if(head == NULL){printf("no such quece!\n");return;}p = head->next;if(p == NULL){printf("quece is emoty!\n");return;}while(p != head){printf("%d\n",p->num);p = p->next;} }int main() {Link head;Link new_node;int i;create_link(&head);for(i = 0;i < 10;i++){create_node(&new_node);new_node->num = i + 1;//push_quece_right(head,new_node); //右進隊push_quece_left(head,new_node); //左進隊}//pop_quece_right(head); //右進隊的出隊pop_quece_left(head); //左進隊出隊return 0; }

總結

以上是生活随笔為你收集整理的8月1日的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。